Menu
CoddyTech

URL con nome

Fa parte della sezione Fondamenti di Django del percorso Django di Coddy. Lezione 10 di 23.

La pagina iniziale dovrebbe rimandare alla pagina Informazioni. Scrivere "/about/" in ogni collegamento funziona finché l’indirizzo non cambia; a quel punto, tutti i collegamenti si rompono. Assegna invece un nome a ogni route e ricava l’indirizzo da quel nome. Il file urls.py di un’app di negozio:

app_name = "shop"

urlpatterns = [
    path("cart/", views.cart, name="cart"),
    path("products/<slug:slug>/", views.product, name="product"),
]
app_name inserisce i nomi in uno spazio dei nomi: il nome completo è "shop:cart", quindi due app possono avere ciascuna una home. reverse() trasforma un nome di nuovo in un indirizzo. Se l’app del negozio è inclusa sotto shop/:
reverse("shop:cart")                    # "/shop/cart/"
reverse("shop:product", args=["mug"])   # "/shop/products/mug/"

Modifica "cart/" in "basket/" e tutti gli indirizzi ricavati dal nome si aggiorneranno di conseguenza.

challenge icon

Sfida

Facile
  • In menu/urls.py, imposta app_name = "menu" e assegna un nome a ogni route: home, about, hours, contact, table, drink, order.
  • Nella pagina iniziale, dopo il paragrafo, aggiungi un link <a href="...">About us</a> il cui indirizzo proviene da reverse("menu:about").

Premi Esegui e fai clic su About us.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di Django

Esercitati da solo: Playground Django