Una pagina per ogni bevanda
Fa parte della sezione Fondamenti di Django del percorso Django di Coddy. Lezione 7 di 23.
Le bevande del bar si trovano ora in DRINKS, un dizionario in menu/views.py. Le sue chiavi, come flat-white, sono slug: parole in minuscolo unite da trattini, pensate per essere inserite in un URL.
Il convertitore slug corrisponde a lettere, cifre, trattini e trattini bassi. Qui assegna una pagina a ogni membro del personale, cercandolo in un dizionario:
path("team/<slug:handle>/", views.team_member),
def team_member(request, handle):
person = STAFF[handle]
return HttpResponse(f"<h2>{person['role']}</h2>")Per /team/maya-cohen/, la vista riceve handle="maya-cohen" e lo usa come chiave. Un percorso e una vista gestiscono l’intero dizionario: una nuova voce ottiene la propria pagina senza bisogno di nuovo codice.
Sfida
FacileDai a ogni bevanda in DRINKS una pagina tutta sua.
- In
menu/urls.py, aggiungi una route che corrisponda a/drinks/latte/,/drinks/flat-white/e a tutte le altre chiavi. Indirizzala aviews.drink. - In
menu/views.py, scrivi una viewdrinkche cerca la chiave inDRINKS. Restituisce il nome in un<h1>, poi la descrizione in un<p>.
Apri /drinks/flat-white/: vedrai Flat White.
Provalo tu
from django.http import HttpResponse
DRINKS = {
"espresso": {"name": "Espresso", "price": 2.5, "description": "A short, strong shot of coffee."},
"latte": {"name": "Latte", "price": 3.5, "description": "Espresso with lots of steamed milk."},
"flat-white": {"name": "Flat White", "price": 3.75, "description": "Espresso with a thin layer of silky milk."},
"hot-chocolate": {"name": "Hot Chocolate", "price": 3, "description": "Dark chocolate melted into warm milk."},
}
def home(request):
return HttpResponse("<h1>Welcome to Corner Café</h1><p>Fresh coffee and cake every day.</p>")
def about(request):
return HttpResponse("Corner Café opened in 2026.")
def hours(request):
return HttpResponse("Open every day from 8:00 to 18:00.")
def contact(request):
return HttpResponse("Write to us at hello@cornercafe.example.")
def table(request, number):
return HttpResponse(f"<h1>Table {number}</h1>")
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 pagina2URL dinamici
Convertitori di percorsoUna pagina per ogni bevandaStringhe di queryGenerare Http404Esercitati da solo: Playground Django