URLs nomeadas
Parte da seção Fundamentos do Django do Journey de Django da Coddy. Lição 10 de 23.
A página inicial deve ter um link para Sobre. Digitar "/about/" em cada link funciona até que o endereço mude; então, todos os links deixam de funcionar. Em vez disso, dê um nome a cada rota e monte o endereço a partir dele. O arquivo urls.py de um app de loja:
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name coloca os nomes em um namespace: o nome completo é "shop:cart", então dois apps podem ter cada um um home. reverse() transforma um nome novamente em um endereço. Com a loja incluída em shop/:
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Chame reverse() dentro de uma view. No início de views.py, ele é executado antes que as rotas existam.
Altere "cart/" para "basket/", e todos os endereços montados a partir do nome serão atualizados.
Desafio
FácilVincule a página inicial à página Sobre pelo nome.
- Em
menu/urls.py, definaapp_namecomo"menu"e nomeie cada rota com o nome da view correspondente:home,about,hours,contact,table,drink,order. - Em
menu/views.py, importereversededjango.urls. Emhome, adicione um linkAbout uscujohrefsejareverse("menu:about").
Clique em Sobre nós: a página Sobre será aberta.
Experimente você mesmo
from django.urls import path
from . import views
urlpatterns = [
path("", views.home),
path("about/", views.about),
path("hours/", views.hours),
path("contact/", views.contact),
path("table/<int:number>/", views.table),
path("drinks/<slug:slug>/", views.drink),
path("order/", views.order),
]
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