Menu
CoddyTech

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.

challenge icon

Görev

Kolay

İş sayfalarını kimliklerden slug'lara taşı:

  • jobs/urls.py dosyasında detail rotası, işin pk'si yerine slug'ını alır.
  • job_list.html dosyası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