Collegamenti tra pagine
Fa parte della sezione Fondamenti di Django del percorso Django di Coddy. Lezione 16 di 23.
Ogni bevanda ha la propria pagina all’indirizzo /drinks/<slug>/ e l’elenco su /drinks/ dovrebbe rimandare a queste pagine. In un template, il tag {% url %} crea un indirizzo a partire dal nome di una route, come fa reverse() in una view:
<a href="{% url 'menu:about' %}">About us</a>
<a href="{% url 'menu:table' 7 %}">Table 7</a>Il nome viene per primo, tra virgolette, insieme al suo namespace. Seguono i valori dei converter, separati da spazi, che possono essere variabili: in un ciclo, {% url 'menu:table' table.number %} crea l’indirizzo di ogni tavolo. Ora ogni bevanda in DRINKS contiene il proprio slug.
Un nome o un valore errato causa un errore nella pagina con NoReverseMatch, quindi un link non funzionante viene individuato mentre costruisci la pagina, non quando un visitatore ci fa clic.
Sfida
FacileIn drinks.html, fai in modo che il nome di ogni bevanda sia un link alla relativa pagina: <a href="...">Latte</a> porta a /drinks/latte/. Crea l’indirizzo usando {% url %} e lo slug della bevanda.
In /drinks/, fai clic su Flat White: si apre la pagina di Flat White.
Provalo tu
<!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>
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di Django
4Layout e file statici
Ereditarietà dei templateUn titolo per ogni pagina3Template
Il tuo primo templateVariabili nei templateEsercitati da solo: Playground Django