kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Djangoチュートリアル(6) テンプレート

index()を書き換えるところからスタート

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    output = ', '.join([q.question_text for q in latest_question_list])
    return HttpResponse(output)

意味はわかる
質問がカンマ区切りで表示されるだけ

ここでいよいよテンプレートの登場

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

index()はこうなる

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))

テンプレートやpythonのコード、ときどき打ち間違えてるけど
ブラウザ上で懇切丁寧にエラーや環境が表示されるのでわかりやすい
助かる
変数名を打ち間違えたらしれっとエラーにもならず表示されたけど

django.shortcuts.render()を使って短くできる

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    context = { 'latest_question_list': latest_question_list}
    return render(request, 'polls/index.html', context)