Djangoの公式マニュアルを全て読んでいないユーザーは、教本を買ってdjangoについて勉強する事になります。
なかなか公式マニュアルにしか記載されていないと感じた事をこの記事では紹介しようと思います。
ビューでテンプレート名を指定しない場合はモデル名で推定される
モデル名:Abcmodelとしています。
# views.py
from django.views.generic import ListView
from books.models import Abcmodel
class AbcList(ListView):
model = Abcmodel
viewの中では、例えばテンプレート名を指定する場合、
template_name=好きな名前.htmlと指定します。
しかし、この指定をしない場合、djangoではそのビューで指定されたモデル名から推定して以下のように自動で決められます。
appname/abcmodel_list.html
テンプレートのファイル名はモデルの名前の先頭文字を小文字にした名前に_listを付けた名前が自動的に採用されます。
テンプレート内で使う変数はobject_listだけではない
ビューでモデル名Abcmodelを指定している状態で
{% extends “base.html” %}
{% block content %}
<h2>リスト内のデータを全て表示</h2>
<ul>
{% for A in object_list %}
<li>{{ A.name }}</li>
{% endfor %}
</ul>
{% endblock %}
Django はモデルのクラス名を小文字にした名前を使ったabcmodel_listをobjec_listと同じように使う事ができます。
{% extends “base.html” %}
{% block content %}
<h2>リスト内のデータを全て表示</h2>
<ul>
{% for A in abcmodel_list %}
<li>{{ A.name }}</li>
{% endfor %}
</ul>
{% endblock %}