URLs nommées
Fait partie de la section Les bases de Django du Journey Django de Coddy. Leçon 10 sur 23.
La page d’accueil doit contenir un lien vers À propos. Saisir "/about/" dans chaque lien fonctionne jusqu’à ce que l’adresse change, puis tous les liens ne fonctionnent plus. Donne plutôt un nom à chaque route et construis l’adresse à partir de ce nom. Le fichier urls.py d’une application de boutique :
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name place les noms dans un espace de noms : le nom complet est "shop:cart", ce qui permet à deux applications d’avoir chacune une home. reverse() transforme un nom en adresse. Avec l’application de boutique incluse sous shop/ :
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Appelle reverse() dans une vue. En haut de views.py, cette fonction s’exécute avant que les routes existent.
Remplace "cart/" par "basket/" et toutes les adresses générées à partir du nom seront mises à jour.
Défi
FacileRelie la page d’accueil à la page À propos par son nom.
- Dans
menu/urls.py, définisapp_namesur"menu"et nomme chaque route d’après sa vue :home,about,hours,contact,table,drink,order. - Dans
menu/views.py, importereversedepuisdjango.urls. Danshome, ajoute un lienAbout usdont lehrefestreverse("menu:about").
Clique sur About us : la page À propos s’ouvre.
Essayez vous-même
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),
]
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases de Django
1Votre premier site Django
Bonjour, DjangoUne deuxième page4Mises en page et fichiers statiques
Héritage des templatesUn titre pour chaque page2URLs dynamiques
Convertisseurs de cheminUne page pour chaque boissonChaînes de requêteLever Http404Entraînez-vous par vous-même : Playground Django