Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python】Djangoモデル(models.py)のviews.pyからの操作方法

Djangoのモデル定義などをmodels.pyで行った後で、views.pyでの定義されたモデルの操作方法を自分で実施した例を挙げて備忘録として残しておきます。

 

これ以降の内容はモデルとして以下の記事のようにmodels.pyでWeaponクラスを定義した場合に沿ったviews.py側での操作方法の例を記載しています。

 

kuku81kuku81.hatenablog.com

 

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 備忘録