5.Djangoのテンプレートでリストとループを使ってみよう

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/ にアクセスします。

Djangoのテンプレートでリストとループを使ってみよう

ちゃんとループ処理でmembersリストの要素を使った繰り返し処理ができています。

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。