Menu
CoddyTech

テンプレート内のループ

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 の変数は参照できません。

challenge icon

チャレンジ

簡単

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プレイグラウンド