Benannte URLs
Teil des Abschnitts Django-Grundlagen der Django-Journey von Coddy. Lektion 10 von 23.
Die Startseite sollte auf „Über uns“ verlinken. "/about/" in jeden Link einzutragen, funktioniert so lange, bis sich die Adresse ändert – dann funktionieren alle Links nicht mehr. Gib stattdessen jeder Route einen Namen und erstelle die Adresse anhand dieses Namens. Die urls.py einer Shop-App:
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name ordnet die Namen einem Namensraum zu: Der vollständige Name lautet "shop:cart", sodass zwei Apps jeweils eine home haben können. reverse() wandelt einen Namen wieder in eine Adresse um. Wenn die Shop-App unter shop/ eingebunden ist:
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Rufe reverse() innerhalb einer View auf. Oben in views.py wird die Funktion ausgeführt, bevor die Routen existieren.
Ändere "cart/" in "basket/", und alle anhand des Namens erstellten Adressen werden entsprechend angepasst.
Aufgabe
EinfachVerknüpfe die Startseite über den Namen mit der Seite „Über uns“.
- Setze in
menu/urls.pyapp_nameauf"menu"und benenne jede Route nach ihrer View:home,about,hours,contact,table,drink,order. - Importiere in
menu/views.pyreverseausdjango.urls. Füge inhomeeinen LinkAbout ushinzu, dessenhrefreverse("menu:about")ist.
Klicke auf „Über uns“: Die Seite „Über uns“ wird geöffnet.
Probier es selbst
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),
]
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Django-Grundlagen
1Deine erste Django-Website
Hallo, DjangoEine zweite Seite4Layouts und statische Dateien
Template-VererbungEin Titel für jede SeiteÜbe selbstständig: Django-Playground