テンプレート内のループ
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プレイグラウンド