Une page pour chaque boisson
Fait partie de la section Les bases de Django du Journey Django de Coddy. Leçon 7 sur 23.
Les boissons du café se trouvent maintenant dans DRINKS, un dictionnaire dans menu/views.py. Ses clés, comme flat-white, sont des slugs : des mots en minuscules reliés par des traits d’union, conçus pour figurer dans une URL.
Le convertisseur slug reconnaît les lettres, les chiffres, les traits d’union et les traits de soulignement. Ici, il attribue une page à chaque membre du personnel, en recherchant son entrée dans un dictionnaire :
path("team/<slug:handle>/", views.team_member),
def team_member(request, handle):
person = STAFF[handle]
return HttpResponse(f"<h2>{person['role']}</h2>")Pour /team/maya-cohen/, la vue reçoit handle="maya-cohen" et l’utilise comme clé. Une seule route et une seule vue servent tout le dictionnaire : une nouvelle entrée obtient sa page sans qu’il soit nécessaire d’ajouter du code.
Défi
FacileDonne à chaque boisson de DRINKS une page à /drinks/ suivie de sa clé :
- une route qui correspond à
/drinks/latte/,/drinks/flat-white/et à toutes les autres clés ; - une vue
drinkqui affiche le nom de la boisson dans un<h1>, puis sa description dans un<p>.
Clique sur Run : l’aperçu s’ouvre à /drinks/latte/.
Essayez vous-même
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>")
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 page2URLs dynamiques
Convertisseurs de cheminUne page pour chaque boissonChaînes de requêteLever Http404Entraînez-vous par vous-même : Playground Django