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 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.

challenge icon

Sfida

Facile

Collega la pagina iniziale alla pagina About usando il nome.

  1. In menu/urls.py, imposta app_name su "menu" e assegna a ogni route il nome della relativa vista: home, about, hours, contact, table, drink, order.
  2. In menu/views.py, importa reverse da django.urls. In home, aggiungi un link About us il cui href è 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),
]
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