Djangoのモデル定義などをmodels.pyで行った後で、views.pyでの定義されたモデルの操作方法を自分で実施した例を挙げて備忘録として残しておきます。
これ以降の内容はモデルとして以下の記事のようにmodels.pyでWeaponクラスを定義した場合に沿ったviews.py側での操作方法の例を記載しています。
views.py側での記載例としては以下のようになります。
views.py
from django.shortcuts import render, redirect, get_object_or_404 from django.http import HttpResponse from .models import Weapon def weaponSelect(request, id): weapon = get_object_or_404(Weapon,pk=id) wpnName = weapon.name wpns = Weapon.objects.order_by('name') txt = { 'wpns': wpns, 'name': wpnName, } return render(request, 'weaponSelect.html', txt)
はじめに、モデルからWeaponを読み込むたむに、
from .models import Weapon
としてimport文を記載します。
その後、定義した関数weaponSelect内で、
def weaponSelect(request, id): wpns = Weapon.objects.order_by('name')
とすると、モデルのWeaponとして登録された武器モデルをname順にソートしたリストとしてwpnsには武器モデルのデータが入れられます。
また、同様に定義した関数weaponSelect内で、
def weaponSelect(request, id): weapon = get_object_or_404(Weapon,pk=id)
とすると、htmlなどからたとえば以下のようにこの関数をid番号付で呼び出したときに、モデルWeaponとして登録された武器モデルの中のid番目の武器が呼び出されます。
weaponSelect.html内
{% for weapon in wpns %} <form method="POST" action="{% url 'battle:weaponSelect' weapon.pk %}"> {% csrf_token %} <button id="button1" type="submit"><span style="color:red">選択</span></button> </form> {% endfor %}
最後に、
return render(request, 'weaponSelect.html', txt)
とすることで、weaponSelect.html画面に対して、txtとして、wpnsとwpnNameが渡され、html側では、渡すときにつけた名前の'wpns'と'name'で呼び出すことができます。
上記weaponSelect.html内のwpnsがその1例になります。
関係記事:
【Python】Djangoでのモデル定義 (models.py内でのモデル作成) - Django Girls and Boys 備忘録
【Python】Djangoのモデル(models.py)変更でのデータベースファイル更新手順 - Django Girls and Boys 備忘録
【Python】Djangoモデル(models.py)のviews.pyからの操作方法 - Django Girls and Boys 備忘録
【Python】Djangoのviews.pyとhtmlファイル、htmlファイルとurls.pyとの間の受け渡し例 - Django Girls and Boys 備忘録
【Python】Djangoでのhtml側からの指定とurlsでの記載方法 - Django Girls and Boys 備忘録