Python

python Django テンプレート名とobject_listのルールに関して

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 %}

ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。
関連記事一覧