Contents
templateの作成
Djangoのtemplateは他のMVCモデルで言うところのView相当のものとなります。
つまり、端的に言うとhtmlファイルになります。
では以下のtemplateを作成してみます。
polls/templates/polls/index.html
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
view.pyの変更
polls/views.py
from django.http import HttpResponse
from django.template import loader
from .models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = {
'latest_question_list': latest_question_list,
}
return HttpResponse(template.render(context, request))
ここでcontextとして渡したlatest_question_listをtemplate上で使用することができます。
template上で変数を扱う場合は{{ 変数名 }} で利用できます。
{% if ~ %}や{% ifend %} はDjangoのtemplateにおいて使用できる組み込み関数なようなものでありpythonの仕様とは異なるので注意が必要です。