Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Vincula la página de inicio con la página «Acerca de» por nombre.

  1. En menu/urls.py, establece app_name en "menu" y nombra cada ruta según su vista: home, about, hours, contact, table, drink, order.
  2. En menu/views.py, importa reverse desde django.urls. En home, añade un enlace About us cuyo href sea reverse("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),
]
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Django