Django

Django templateの作成

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の仕様とは異なるので注意が必要です。