Menu
CoddyTech

Liens entre les pages

Fait partie de la section Les bases de Django du Journey Django de Coddy. Leçon 16 sur 23.

Chaque boisson a sa propre page à l’adresse /drinks/<slug>/, et la liste sur /drinks/ doit contenir des liens vers ces pages. Dans un modèle, la balise {% url %} construit une adresse à partir du nom d’une route, comme le fait reverse() dans une vue :

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

Le nom vient en premier, entre guillemets, avec son espace de noms. Les valeurs des convertisseurs suivent, séparées par des espaces, et elles peuvent être des variables : dans une boucle, {% url 'menu:table' table.number %} construit l’adresse de chaque table. Chaque boisson dans DRINKS possède maintenant son propre slug.

Un nom ou une valeur incorrect provoque une erreur sur la page avec NoReverseMatch : un lien défectueux se manifeste pendant que tu construis la page, et non quand un visiteur clique dessus.

challenge icon

Défi

Facile

Dans drinks.html, faites de chaque nom de boisson un lien vers sa page : <a href="...">Latte</a> mène à /drinks/latte/. Construisez l’adresse avec {% url %} et le slug de la boisson.

Cliquez sur Exécuter, puis cliquez sur Flat White dans /drinks/.

Essayez vous-même

<!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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les bases de Django

Entraînez-vous par vous-même : Playground Django