Slug'a Göre Sayfalar
Coddy'nin Django Journey'sinin Sınıf Tabanlı Görünümler bölümünün bir parçası. Ders 6 / 18.
/jobs/7/ iş hakkında hiçbir şey söylemez. /jobs/python-developer-brightline/ ise hem insanlara hem de arama motorlarına bunun ne olduğunu söyler. Bu okunabilir kısım bir slug'dır: tirelerle birleştirilmiş küçük harfli sözcükler. Her Job nesnesinde slug alanında zaten bir tane bulunur.
URL bağımsız değişkeninin adı slug olduğunda, bir DetailView, slug alanı eşleşen satırı bulur. Her iki ad da değiştirilebilir. "recipes/<slug:recipe_slug>/" rotasına sahip bir tarif sitesi, görünüme şunu söyler:
class RecipeDetailView(DetailView):
model = Recipe
slug_url_kwarg = "recipe_slug"slug_url_kwarg URL bağımsız değişkeninin, slug_field ise model alanının adını belirtir; ikisinin de varsayılan değeri "slug"'dır. Görünüme bildirmeden URL bağımsız değişkenini yeniden adlandırırsanız, ne bir pk ne de bir slug bulabilir ve hata verir.
Görev
Kolayİş sayfalarını kimliklerden slug'lara taşı:
jobs/urls.pydosyasındadetailrotası, işin pk'si yerine slug'ını alır.job_list.htmldosyasında her bağlantı işin slug'ını iletir.
Run'a bas ve /jobs/ sayfasında Python Developer'a tıkla: adres /jobs/python-developer-brightline/ olur.
Kendin dene
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"),
]
Sınıf Tabanlı Görünümler bölümündeki tüm dersler
Kendi başına pratik yap: Django playground