URL con nome
Fa parte della sezione Fondamenti di Django del percorso Django di Coddy. Lezione 10 di 23.
La pagina iniziale dovrebbe contenere un collegamento ad About. Digitare "/about/" in ogni collegamento funziona finché l'indirizzo non cambia, dopodiché tutti i collegamenti si interrompono. Invece, assegna un nome a ogni percorso e ricava l'indirizzo da quel nome. Il file urls.py di un'app shop:
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 entrambe un home. reverse() trasforma un nome di nuovo in un indirizzo. Con shop inclusa sotto shop/:
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Chiama reverse() all'interno di una vista. All'inizio di views.py viene eseguita prima che esistano i percorsi.
Modifica "cart/" in "basket/" e tutti gli indirizzi ricavati dal nome si aggiorneranno di conseguenza.
Sfida
FacileCollega la pagina iniziale alla pagina About usando il nome.
- In
menu/urls.py, impostaapp_namesu"menu"e assegna a ogni route il nome della relativa vista:home,about,hours,contact,table,drink,order. - In
menu/views.py, importareversedadjango.urls. Inhome, aggiungi un linkAbout usil cuihrefèreverse("menu:about").
Fai clic su About us: si apre la pagina About.
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),
]
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di Django
4Layout e file statici
Ereditarietà dei templateUn titolo per ogni pagina2URL dinamici
Convertitori di percorsoUna pagina per ogni bevandaStringhe di queryGenerare Http404Esercitati da solo: Playground Django