Menu
CoddyTech

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 comparire in un URL.

Il convertitore slug corrisponde a lettere, cifre, trattini e caratteri di sottolineatura. Qui assegna a ogni membro del personale una pagina, 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. Una route e una vista servono l'intero dizionario: una nuova voce ottiene la propria pagina senza bisogno di nuovo codice.

challenge icon

Sfida

Facile

Assegna a ogni bevanda in DRINKS una pagina all'indirizzo /drinks/ seguito dalla relativa chiave:

  • una route che corrisponda a /drinks/latte/, /drinks/flat-white/ e a tutte le altre chiavi;
  • una vista drink che mostri il nome della bevanda in un <h1>, poi la sua descrizione in un <p>.

Premi Run: l'anteprima si apre su /drinks/latte/.

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>")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di Django

Esercitati da solo: Playground Django