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.
Défi
FacileDans 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>
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
1Votre premier site Django
Bonjour, DjangoUne deuxième page4Mises en page et fichiers statiques
Héritage des templatesUn titre pour chaque page3Modèles
Votre premier modèleVariables de modèleEntraînez-vous par vous-même : Playground Django