Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Vincule a página inicial à página Sobre pelo nome.

  1. Em menu/urls.py, defina app_name como "menu" e nomeie cada rota com o nome da view correspondente: home, about, hours, contact, table, drink, order.
  2. Em menu/views.py, importe reverse de django.urls. Em home, adicione um link About us cujo href seja reverse("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),
]
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