テンプレート内のループ
CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 13/23。
カフェに新しいページ /drinks/ ができました。そのビューはすべてのドリンクを drinks としてテンプレートに渡しますが、ページ上のリストは空です。{% for %} タグは項目ごとに HTML を繰り返します。空席のテーブルを一覧表示するページの例です。
<ul>
{% for table in free_tables %}
<li>Table {{ table }} is free.</li>
{% empty %}
<li>Every table is taken.</li>
{% endfor %}
</ul>これは Python の for と同じように動作し、table には順番に各項目が設定されます。テンプレートにはインデントのルールがないため、{% endfor %} でループを閉じます。省略可能な {% empty %} の部分は、リストが空のときだけ表示されます。
ループが参照できるのは drinks のようにコンテキスト内にある名前だけで、views.py の変数は参照できません。
チャレンジ
簡単drinks.htmlで、<ul>の中でdrinksをループ処理します。
- ドリンクごとに、名前を含む
<li class="drink">を1つ表示します。 - ドリンクがない場合は、代わりに
<li>No drinks today.</li>を表示します。
実行を押すと、/drinks/に4種類のドリンクが表示されます。
自分で試してみよう
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Our Drinks</title>
</head>
<body>
<h1>Our Drinks</h1>
<ul>
<!-- one <li class="drink"> per drink -->
</ul>
</body>
</html>
Djangoの基礎のすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド