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 ne olduğunu anlatır. Bu okunabilir kısma slug denir: tirelerle birleştirilmiş küçük harfli sözcükler. Her Job nesnesinde zaten slug alanında 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. Yolu "recipes/<slug:recipe_slug>/" olan 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 adını, slug_field ise model alanının adını belirtir; her ikisinin varsayılan değeri "slug" şeklindedir. Görünüme bildirmeden URL bağımsız değişkeninin adını değiştirirseniz, görünüm ne bir pk ne de bir slug bulabilir ve hata verir.
Görev
Kolayİş sayfalarını kimliklerden slug'lara taşı.
jobs/urls.pydosyasında,detailrotasının işin pk'si yerine slug'ını almasını sağla.job_list.htmldosyasında, her bağlantının işin slug'ını iletmesini sağla.
/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