Menu
CoddyTech

Seiten nach Slug

Teil des Abschnitts Klassenbasierte Views der Django-Journey von Coddy. Lektion 6 von 18.

/jobs/7/ sagt nichts über den Job aus. /jobs/python-developer-brightline/ sagt Menschen und Suchmaschinen, worum es geht. Dieser lesbare Teil ist ein Slug: kleingeschriebene Wörter, die durch Bindestriche verbunden sind. Jedes Job hat bereits einen im Feld slug.

Wenn das URL-Argument slug heißt, findet eine DetailView den Datensatz, dessen Feld slug übereinstimmt. Beide Namen können geändert werden. Eine Rezeptseite, deren Route "recipes/<slug:recipe_slug>/" lautet, teilt der View Folgendes mit:

class RecipeDetailView(DetailView):
    model = Recipe
    slug_url_kwarg = "recipe_slug"

slug_url_kwarg bezeichnet das URL-Argument und slug_field das Modellfeld; für beide gilt standardmäßig "slug". Benennst du das URL-Argument um, ohne es der View mitzuteilen, findet sie weder einen Primärschlüssel noch einen Slug und stürzt ab.

challenge icon

Aufgabe

Einfach

Stelle die Jobseiten von IDs auf Slugs um.

  1. Sorge in jobs/urls.py dafür, dass die detail-Route statt des Pks den Slug des Jobs entgegennimmt.
  2. Sorge in job_list.html dafür, dass jeder Link den Slug des Jobs übergibt.

Klicke auf Python Developer unter /jobs/: Die Adresse lautet /jobs/python-developer-brightline/.

Probier es selbst

from django.urls import path

from . import views

app_name = "jobs"

urlpatterns = [
    path("", views.HomeView.as_view(), name="home"),
    path("about/", views.AboutView.as_view(), name="about"),
    path("jobs/", views.JobListView.as_view(), name="list"),
    path("jobs/<int:pk>/", views.JobDetailView.as_view(), name="detail"),
]

Alle Lektionen in Klassenbasierte Views

Übe selbstständig: Django-Playground