ども、みむらんです。
第2回の続きってことで。
1.テンプレートとなる HTML ファイルを書く。
test_project ディレクトリ以下に templates/test_app ディレクトリを作成し、
templates/test_app ディレクトリ以下に home.html を以下の内容で作成します。
<html> <head> <title>{{title}}</title> </head> <body> {% for i in data %} {{i}}<br/> {% endblock %} </body> </html>
{{変数}} というのを、「テンプレート変数」と呼び、
{{% タグ 引数 %}} ~ {{% end タグ %}} というのを、「タグ」と呼びます。
テンプレート変数の記述を用いて、変数の中身を表示させ、
タグの記述を用いて表示上の処理を記述する形となります。
Django テンプレート言語 — Django v1.0 documentation
ぱーっとこのページを見ていた感じでは、以下の要素がよく使われそうな気がします(ぉ
タグ名 |
利用用途 |
extends [template file] | すでに定義されているテンプレートファイルを継承する。 Java での extend と同義と捉えられるかも。 |
block [block name] | 継承元:ブロック(範囲)を定義し、継承先で値が変更される場所を設定する。 継承先:事前にブロックとして定義されている範囲のテキストを変更する。 |
for [val1] in [val2] | val2 から要素を1つ1つ取り出し、 val1 に格納する形で、 for ~ endfor 間を繰り返す。 Java で言うところの foreach がこれに該当。 ちなみに、 Python の for は全て foreach な処理になっている。 |
if [条件] ~ else ~ endif ifequal [val1] [val2] ~ endifequal ifnotequal [val1] [val2] endnotequal |
条件が真であれば、該当範囲が実行される。通常の if 条件と同じ。 ifequal は2つが等しい場合。 ifnotequal は2つが等しくない場合にそれぞれ実行される。 |
2.settings.py にテンプレートが置かれているディレクトリのパスを記述する。
TEMPLATE_DIRS = ( )
こうなっている部分があるかと思いますが、ここを下記のように書き換えます。
TEMPLATE_DIRS = ( '[test_project までの絶対パス]/templates', )
([test_project までの絶対パス] には、それぞれの環境に合ったパスを記述してください。)
3.views.py を編集する。
test_app に移動し、views.py を以下のように書き換えます。
from django.http import HttpResponse from django.template import loader, RequestContext def home(req): contexts = RequestContext(req, { 'title' : 'hello django!', 'data' : ('Hello', 'django', 'world'), }) template = loader.get_template('test_app/home.html') return HttpResponse(template.render(contexts))