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.
Wyzwanie
ŁatwyZmień strony ofert pracy tak, aby korzystały ze slugów zamiast identyfikatorów.
- W pliku
jobs/urls.pyustaw trasędetailtak, aby przyjmowała slug oferty pracy zamiast jej klucza głównego. - W pliku
job_list.htmlustaw 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
2Generyczne widoki wyświetlania
ListViewDetailViewPoćwicz samodzielnie: Edytor online Django