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 pracy. /jobs/python-developer-brightline/ informuje, czym jest, ludzi i wyszukiwarki. Ta czytelna część to slug: małe litery połączone łącznikami. Każdy obiekt Job ma już taki wpis w polu slug.

Gdy argument adresu URL nazywa się slug, widok DetailView znajduje wiersz, którego pole slug ma pasującą wartość. Obie nazwy można zmienić. Trasa w serwisie z przepisami, zapisana jako "recipes/<slug:recipe_slug>/", informuje widok:

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

slug_url_kwarg określa nazwę argumentu adresu URL, a slug_field — nazwę pola modelu; domyślną wartością obu jest "slug". Jeśli zmienisz nazwę argumentu adresu URL i nie poinformujesz o tym widoku, nie znajdzie on ani pk, ani sluga i zakończy działanie błędem.

challenge icon

Wyzwanie

Łatwy

Zmień strony ofert pracy tak, aby korzystały ze slugów zamiast identyfikatorów.

  1. W pliku jobs/urls.py ustaw trasę detail tak, aby przyjmowała slug oferty pracy zamiast jej klucza głównego.
  2. W pliku job_list.html ustaw każdy odnośnik tak, aby przekazywał slug oferty pracy.

Na stronie /jobs/ kliknij Python Developer: 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