Menu
CoddyTech

Links zwischen Seiten

Teil des Abschnitts Django-Grundlagen der Django-Journey von Coddy. Lektion 16 von 23.

Jedes Getränk hat seine Seite unter /drinks/<slug>/, und die Liste unter /drinks/ sollte auf diese Seiten verlinken. In einer Vorlage erstellt das Tag {% url %} eine Adresse anhand des Namens einer Route, so wie es reverse() in einer View tut:

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

Zuerst kommt der Name in Anführungszeichen, zusammen mit seinem Namensraum. Danach folgen die Werte der Konverter, durch Leerzeichen getrennt; sie können auch Variablen sein: In einer Schleife erstellt {% url 'menu:table' table.number %} die Adresse für jeden Tisch. Jedes Getränk in DRINKS hat jetzt seinen eigenen slug.

Ein falscher Name oder Wert lässt die Seite mit NoReverseMatch abstürzen. Ein fehlerhafter Link fällt also schon beim Erstellen der Seite auf und nicht erst, wenn ein Besucher darauf klickt.

challenge icon

Aufgabe

Einfach

Verlinke in drinks.html den Namen jedes Getränks mit seiner Seite: <a href="...">Latte</a> führt zu /drinks/latte/. Erstelle die Adresse mit {% url %} und dem slug des Getränks.

Klicke auf Ausführen und dann auf Flat White unter /drinks/.

Probier es selbst

<!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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Django-Grundlagen

Übe selbstständig: Django-Playground