Djangoでテンプレートエンジンを使って、リストを定義してループで表示してみましょう。リストをテンプレートに渡すには文字列を渡した時と同じように contextという名前の辞書に定義して render関数の第三引数に指定します。
目次
views.pyにリストを作成
/bbsディレクトリに用意した views.py に次のコードを記述します。
from django.shortcuts import render from django.http import HttpResponse def index(request): context = { 'name': 'Django', 'members': ['秋原', '今井', '上田'] # context辞書にリストを定義 } return render(request, 'bbs/index.html', context) # テンプレートに渡す
テンプレート側にPythonの処理を書く
このリストをテンプレート側で取り出してみましょう。
Djangoではテンプレート側でもPythonのコードを書くことができます。テンプレート側でPythonのコードを書く際はその部分を {% %} で囲みます。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Djangoを使ってみよう!</title> </head> <body> <h1>{{ name }}で作る1行掲示板</h1> {% for member in members %} <p>{{ member }} くんが登校しました。</p> {% endfor %} </body> </html>
インデントは付いていますがPythonのコード内にインデントがあるわけではないため、for文の終わりを示す endfor が必要となります。
このコードはviews.pyからmembersリストを受け取り、要素を1つずつ取り出してfor文によるループ処理で出力します。
Djangoコマンドを使ってアプリケーションを実行し、ブラウザで確認してみましょう。
http://127.0.0.1:8000/bbs/ にアクセスします。
ちゃんとループ処理でmembersリストの要素を使った繰り返し処理ができています。