Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Dê a cada bebida em DRINKS sua própria página.

  1. Em menu/urls.py, adicione uma rota que corresponda a /drinks/latte/, /drinks/flat-white/ e a todas as outras chaves. Aponte-a para views.drink.
  2. Em menu/views.py, escreva uma view drink que procure a chave em DRINKS. 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>")
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Playground de Django