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 enlazar 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 crea 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 tienda incluida bajo shop/:
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Llama a reverse() dentro de una vista. Al principio de views.py, se ejecuta antes de que existan las rutas.
Cambia "cart/" por "basket/" y todas las direcciones creadas a partir del nombre se actualizarán.
Desafío
FácilVincula la página de inicio con la página «Acerca de» por nombre.
- En
menu/urls.py, estableceapp_nameen"menu"y nombra cada ruta según su vista:home,about,hours,contact,table,drink,order. - En
menu/views.py, importareversedesdedjango.urls. Enhome, añade un enlaceAbout uscuyohrefseareverse("menu:about").
Haz clic en About us: se abre la página «Acerca de».
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