Uma página para cada bebida
Parte da seção Fundamentos do Django do Journey de Django da Coddy. Lição 7 de 23.
As bebidas do café agora ficam em DRINKS, um dicionário em menu/views.py. Suas chaves, como flat-white, são slugs: palavras em minúsculas unidas por hífens, feitas para aparecer em uma URL.
O conversor slug corresponde a letras, dígitos, hífens e sublinhados. Aqui, ele dá a cada funcionário uma página, consultada em um dicionário:
path("team/<slug:handle>/", views.team_member),
def team_member(request, handle):
person = STAFF[handle]
return HttpResponse(f"<h2>{person['role']}</h2>")Para /team/maya-cohen/, a view recebe handle="maya-cohen" e o usa como chave. Uma rota e uma view atendem a todo o dicionário: uma nova entrada ganha sua página sem exigir código novo.
Desafio
FácilDê a cada bebida em DRINKS sua própria página.
- Em
menu/urls.py, adicione uma rota que corresponda a/drinks/latte/,/drinks/flat-white/e a todas as outras chaves. Aponte-a paraviews.drink. - Em
menu/views.py, escreva uma viewdrinkque procure a chave emDRINKS. Ela retorna o nome em um<h1>e, em seguida, a descrição em um<p>.
Abra /drinks/flat-white/: você verá Flat White.
Experimente você mesmo
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>")
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos do Django
1Seu Primeiro Site com Django
Olá, DjangoUma Segunda Página4Layouts e Arquivos Estáticos
Herança de TemplatesUm Título para Cada Página2URLs Dinâmicas
Conversores de caminhoUma página para cada bebidaStrings de consultaGerando Http404Pratique por conta própria: Playground de Django