Djangoテンプレートの変数展開まとめ|初心者向けにわかりやすく解説
生徒
「Djangoのテンプレートって聞いたんですけど、そもそも何をするものなんですか?」
先生
「テンプレートは、画面に表示する文章やデータの形を決める仕組みです。変数展開を使うと、プログラムの中の値を画面に表示できます。」
生徒
「変数って難しそうです…。パソコンをほとんど触ったことがなくても大丈夫ですか?」
先生
「大丈夫です。紙に名前を書いて渡すような感覚で考えると、とても分かりやすくなりますよ。」
1. Djangoテンプレートとは何か
Djangoテンプレートとは、Webページに表示する内容を作るための仕組みです。HTMLという画面用の文章の中に、Django独自の書き方を少しだけ混ぜて使います。これにより、毎回同じ文章を書く必要がなくなり、データだけを入れ替えて表示できます。
たとえば、名前や年齢をプログラム側で用意しておき、テンプレートでは「ここに名前を表示する」と指定するだけで、自動的に画面に反映されます。この仕組みが、Djangoテンプレートの基本です。
2. 変数とは何かを超かんたんに理解する
変数とは、値を入れておく箱のようなものです。紙に「名前:山田」と書いて渡すイメージに近く、箱の名前が「name」、中身が「山田」です。Djangoでは、この箱をビューと呼ばれる場所で用意し、テンプレートに渡します。
テンプレート側では、その箱の名前を指定するだけで中身を取り出して表示できます。難しい計算や操作は不要で、表示したい内容をそのまま書くだけで使えます。
3. テンプレートでの基本的な変数展開
Djangoテンプレートで変数を表示するときは、二重の波かっこを使います。この記号が「ここに値を入れてください」という合図になります。初心者の方は、記号の意味を丸暗記せず、目印だと考えると理解しやすくなります。
<p>こんにちは、{{ name }} さん</p>
この例では、nameという変数の中身が、そのまま画面に表示されます。もしnameに「佐藤」が入っていれば、「こんにちは、佐藤 さん」と表示されます。
4. 数字や文章もそのまま表示できる
変数の中身は、文字だけでなく数字も使えます。年齢や点数など、数値データも同じように表示できます。テンプレート側では特別な処理は必要ありません。
<p>あなたの年齢は {{ age }} 歳です</p>
ageに20が入っていれば、「あなたの年齢は20歳です」と表示されます。このように、変数展開は文章の一部として自然に使えます。
5. 辞書のようなデータの変数展開
Djangoでは、複数の情報をまとめて扱うことがあります。これを辞書のようなデータと考えると分かりやすいです。一つの箱の中に、名前やメールアドレスが入っているイメージです。
<p>名前:{{ user.name }}</p>
<p>メール:{{ user.email }}</p>
userという箱の中に、nameやemailが入っており、それぞれを指定して表示できます。ドットは「中をのぞく」という意味で覚えると理解しやすくなります。
6. ifを使った簡単な条件表示
テンプレートでは、条件によって表示を変えることもできます。ifは「もし〜なら」という意味で、日常会話とほぼ同じ感覚で使えます。年齢によって表示を変える例を見てみましょう。
{% if age >= 20 %}
<p>大人の方ですね</p>
{% else %}
<p>未成年の方ですね</p>
{% endif %}
このように、条件によって文章を切り替えられるため、画面表示を柔軟に変更できます。
7. forを使った繰り返し表示
同じ形のデータを何度も表示したいときは、forを使います。これは「順番に取り出す」という意味です。買い物リストを一つずつ読む感覚で考えると分かりやすいです。
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
itemsに複数の値が入っていれば、その数だけ自動で表示されます。手作業で同じ文章を書く必要がなくなります。
8. 変数展開で気をつけたいポイント
Djangoテンプレートでは、安全性を高めるために、自動で危険な文字を変換します。そのため、基本的には安心して変数を表示できます。また、変数名は間違えると何も表示されないため、名前の一致に注意が必要です。
初心者のうちは、「表示されない=エラー」ではなく、「名前が違うかも」と考えると、落ち着いて確認できます。