Benannte URLs
Teil des Abschnitts Django-Grundlagen der Django-Journey von Coddy. Lektion 10 von 23.
Die Startseite sollte auf „Über uns“ verweisen. "/about/" in jeden Link einzutragen, funktioniert, bis sich die Adresse ändert – dann funktionieren alle Links nicht mehr. Gib stattdessen jeder Route einen Namen und erstelle die Adresse daraus. 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 versieht die Namen mit einem Namespace: Der vollständige Name lautet "shop:cart", sodass zwei Apps jeweils ein home haben können. reverse() wandelt einen Namen wieder in eine Adresse um. Wenn die Shop-App unter shop/ eingebunden ist:reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"Ändere "cart/" in "basket/", und alle aus dem Namen erstellten Adressen werden entsprechend angepasst.
Aufgabe
Einfach- Lege in
menu/urls.pyapp_name = "menu"fest und benenne jede Route:home,about,hours,contact,table,drink,order. - Füge auf der Startseite nach dem Absatz einen Link
<a href="...">About us</a>hinzu, dessen Adresse vonreverse("menu:about")stammt.
Klicke auf Ausführen und dann auf Über uns.
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