Djangoテンプレートの使い方を完全解説!初心者でもわかるタグ・フィルタ入門
生徒
「Djangoで画面を作るとき、HTMLはどこに書けばいいんですか?」
先生
「Djangoではテンプレートという仕組みを使って、画面表示用のHTMLを書きます。」
生徒
「テンプレートって難しそうです。パソコンをほとんど触ったことがなくても大丈夫ですか?」
先生
「大丈夫です。HTMLに少し特別な書き方を足すだけなので、順番に見ていきましょう。」
1. Djangoテンプレートとは何か
Djangoテンプレートとは、Web画面を表示するための設計図のようなものです。普段ブラウザで見ている文字や画像、表などは、HTMLという文章で書かれています。Djangoでは、このHTMLの中に「ここにデータを表示する」という目印を書いておき、あとからPythonの処理結果をはめ込みます。これにより、同じ画面構成を使い回しながら内容だけを変えられるようになります。
たとえば、毎回同じヘッダーやメニューを書くのは大変ですが、テンプレートを使えば一度書くだけで済みます。初心者の方は「HTMLに目印を書いて、自動で文字を入れてくれる仕組み」と覚えると理解しやすいです。
2. テンプレートファイルの基本構成
Djangoのテンプレートは、通常「templates」という名前のフォルダに保存します。このフォルダ名は決まりごとなので、そのまま使うのが一般的です。中にはHTMLファイルを置きます。ファイル名は自由ですが、内容が分かる名前にすると管理しやすくなります。
テンプレートは、ビューと呼ばれるPythonの処理から指定されて表示されます。ビューが「このHTMLを使って表示して」と指示し、テンプレートが実際の画面を作ります。難しく考えず、Pythonが司令塔で、テンプレートが画面担当だとイメージしてください。
3. {{ }} を使った変数の表示
Djangoテンプレートで最もよく使うのが変数表示です。変数とは、文字や数字を一時的に入れておく箱のようなものです。テンプレートでは、二重の波かっこで囲んで表示します。
<p>こんにちは、{{ name }}さん</p>
このように書くと、Python側で用意したnameの中身が表示されます。たとえば「太郎」という文字が入っていれば、「こんにちは、太郎さん」と画面に出ます。波かっこはDjango専用の目印なので、HTMLとは役割が違う点を覚えておきましょう。
4. ifタグで条件分岐をする
条件分岐とは、「もし〜なら」という判断をする仕組みです。Djangoテンプレートではifタグを使って、表示を切り替えられます。たとえば、ログインしている人だけにメッセージを出したい場合に便利です。
{% if is_login %}
<p>ログイン中です</p>
{% else %}
<p>ログインしていません</p>
{% endif %}
ここではis_loginという箱の中身を見て、正しい場合とそうでない場合で表示を変えています。文章を読むように上から順に理解すると混乱しにくいです。
5. forタグで繰り返し表示する
同じ形の表示を何度も行いたいときは、forタグを使います。これは「順番に取り出して表示する」仕組みです。買い物リストや名前一覧などでよく使われます。
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
itemsの中に複数の文字が入っていると、その数だけliタグが作られます。人が手で同じ行を書く代わりに、Djangoが自動で繰り返してくれると考えると分かりやすいです。
6. フィルタで表示を加工する
フィルタは、表示する直前に文字を少し加工する道具です。たとえば、大文字にしたり、長い文章を短くしたりできます。パイプ記号を使って指定します。
<p>{{ message|upper }}</p>
この例では、messageの文字をすべて大文字にして表示します。フィルタは「見た目だけを変える」と覚えておくと、Pythonの処理と混同しにくくなります。
7. テンプレートでよくある注意点
Djangoテンプレートでは、Pythonのコードをそのまま書くことはできません。計算や複雑な処理はビュー側で行い、テンプレートは表示に専念させます。この役割分担が、Djangoの分かりやすさにつながっています。
また、波かっこやタグの閉じ忘れはエラーの原因になります。最初はエラーが出ても、慌てず一つずつ確認することが大切です。文章として読めるかどうかを意識すると、間違いに気づきやすくなります。