Django テンプレート変数
テンプレート変数
Djangoテンプレートでは、変数を{{ }}
括弧内に入れることで変数をレンダリングできます。
ビューで変数を作成
上の例の変数firstname
は、ビューを介してテンプレートに送信されました。
views.py
:
from django.http import HttpResponse
from django.template import loader
def testing(request):
template = loader.get_template('template.html')
context = {
'firstname': 'Linus',
}
return HttpResponse(template.render(context, request))
上のビューでわかるように、contextという名前のオブジェクトを作成してデータを入力し、それをtemplate.render()
関数の最初のパラメーターとして送信します。
テンプレートに変数を作成する
{% with %}
テンプレートタグを使用して、テンプレート内に変数を直接作成することもできます。
この変数は、{% endwith %}
タグが表示されるまで使用できます。
例
templates/template.html
:
{% with firstname="Tobias" %}
<h1>Hello {{ firstname }}, how are you?</h1>
{% endwith %}
実行例(開発準備中) »テンプレートタグについては、次の章で詳しく説明します。
モデルからのデータ
上記の例は、テンプレートで変数を作成して使用する簡単な方法を示しています。
通常、テンプレートで使用する外部データのほとんどは、モデルから取得されます。
前の章でMember
というモデルを作成しました。このチュートリアルの次の章の多くの例でこれを使用します。
Member
モデルからデータを取得するには、views.py
ファイルにデータをインポートし、ビューでそこからデータを抽出する必要があります。
members/views.py
:
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from .models import Member
def testing(request):
mymembers = Member.objects.all().values()
template = loader.get_template('template.html')
context = {
'mymembers': mymembers,
}
return HttpResponse(template.render(context, request))
これで、テンプレートでデータを使用できます。
templates/template.html
:
<ul>
{% for x in mymembers %}
<li>{{ x.firstname }}</li>
{% endfor %}
</ul>
実行例(開発準備中) »Djangoテンプレートタグを使用します{% for %}
メンバーをループします。
テンプレートタグについては、次の章で詳しく説明します。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。