Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Verknüpfe die Startseite über den Namen mit der Seite „Über uns“.

  1. Setze in menu/urls.py app_name auf "menu" und benenne jede Route nach ihrer View: home, about, hours, contact, table, drink, order.
  2. Importiere in menu/views.py reverse aus django.urls. Füge in home einen Link About us hinzu, dessen href reverse("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),
]
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Django-Grundlagen

Übe selbstständig: Django-Playground