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.
Wyzwanie
ŁatwyZmień adresy stron ofert pracy z identyfikatorów na slugi:
- W pliku
jobs/urls.pytrasadetailprzyjmuje slug oferty pracy zamiast jej klucza głównego. - W pliku
job_list.htmlkaż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
2Generyczne widoki wyświetlania
ListViewDetailViewPoćwicz samodzielnie: Edytor online Django