URLs con nombre
Parte de la sección Conceptos básicos de Django del Journey de Django de Coddy. Lección 10 de 23.
La página de inicio debe tener un enlace a Acerca de. Escribir "/about/" en cada enlace funciona hasta que cambia la dirección, y entonces todos los enlaces dejan de funcionar. En su lugar, asigna un nombre a cada ruta y construye la dirección a partir de él. El archivo urls.py de una aplicación de tienda:
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name coloca los nombres en un espacio de nombres: el nombre completo es "shop:cart", así que dos aplicaciones pueden tener cada una un home. reverse() convierte un nombre de nuevo en una dirección. Con la aplicación de tienda incluida bajo shop/:reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Cambia "cart/" por "basket/" y todas las direcciones construidas a partir del nombre se actualizarán.
Desafío
Fácil- En
menu/urls.py, estableceapp_name = "menu"y asigna un nombre a cada ruta:home,about,hours,contact,table,drink,order. - En la página de inicio, después del párrafo, añade un enlace
<a href="...">About us</a>cuya dirección provenga dereverse("menu:about").
Pulsa Ejecutar y haz clic en Sobre nosotros.
Pruébalo tú mismo
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 lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Conceptos básicos de Django
1Tu primer sitio con Django
Hola, DjangoUna segunda página4Diseños y archivos estáticos
Herencia de plantillasUn título para cada página2URLs dinámicas
Convertidores de rutaUna página para cada bebidaCadenas de consultaLanzar Http404Practica por tu cuenta: Playground de Django