Menu
CoddyTech

Strony według sluga

Część sekcji Widoki oparte na klasach ścieżki Django w Coddy. Lekcja 6 z 18.

/jobs/7/ nie mówi nic o ofercie pracy. /jobs/python-developer-brightline/ informuje, czym ona jest — zarówno ludzi, jak i wyszukiwarki. Ta czytelna część to slug: słowa zapisane małymi literami i połączone łącznikami. Każdy obiekt Job ma już taki slug w polu slug.

Gdy argument URL-a nazywa się slug, widok DetailView wyszukuje wiersz, którego pole slug ma pasującą wartość. Obie nazwy można zmienić. Trasa w witrynie z przepisami, która ma postać "recipes/<slug:recipe_slug>/", informuje widok:

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

slug_url_kwarg określa nazwę argumentu URL-a, a slug_field nazwę pola modelu; domyślną wartością obu jest "slug". Zmień nazwę argumentu URL-a, nie informując o tym widoku, a nie znajdzie on ani pk, ani sluga i ulegnie awarii.

challenge icon

Wyzwanie

Łatwy

Zmień adresy stron ofert pracy z identyfikatorów na slugi:

  • W pliku jobs/urls.py trasa detail przyjmuje slug oferty pracy zamiast jej klucza głównego.
  • W pliku job_list.html każdy link przekazuje slug oferty pracy.

Naciśnij Run i kliknij Python Developer na stronie /jobs/: adres to /jobs/python-developer-brightline/.

Spróbuj swoich sił

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"),
]

Wszystkie lekcje w sekcji Widoki oparte na klasach

Poćwicz samodzielnie: Edytor online Django