Menu
CoddyTech

ページ間のリンク

CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 16/23。

すべてのドリンクには /drinks/<slug>/ にページがあり、/drinks/ の一覧からそれらのページにリンクする必要があります。テンプレートでは、{% url %} タグがルート名からアドレスを作成します。これはビュー内の reverse() と同じです。

<a href="{% url 'menu:about' %}">About us</a>
<a href="{% url 'menu:table' 7 %}">Table 7</a>

名前を最初に引用符で囲み、名前空間を付けます。コンバーターの値はその後にスペースで区切って指定し、変数を使うこともできます。ループ内で {% url 'menu:table' table.number %} を使うと、それぞれのテーブルのアドレスが作成されます。DRINKS の各ドリンクには、それぞれ独自の slug が設定されています。

名前や値が間違っていると、ページは NoReverseMatch でエラーになります。そのため、リンク切れは訪問者がクリックしたときではなく、ページを作成している間に見つかります。

challenge icon

チャレンジ

簡単

drinks.htmlで、それぞれのドリンク名をそのページへのリンクにします。<a href="...">Latte</a>は/drinks/latte/に移動します。{% url %}とドリンクのslugを使ってURLを組み立てます。

Runを押して、/drinks/にあるFlat Whiteをクリックします。

自分で試してみよう

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Our Drinks</title>
</head>
<body>
    <h1>Our Drinks</h1>
    <p class="count">{{ drinks|length }} drink{{ drinks|pluralize }}</p>
    <ul>
        {% for drink in drinks %}
            <li class="drink">
                {{ drink.name }}
                <span class="price">${{ drink.price|floatformat:2 }}</span>
                {% if drink.sold_out %}
                    <span class="sold-out">Sold out</span>
                {% endif %}
            </li>
        {% empty %}
            <li>No drinks today.</li>
        {% endfor %}
    </ul>
</body>
</html>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Djangoの基礎のすべてのレッスン

自分で練習してみよう: Djangoプレイグラウンド