Menu
CoddyTech

Halaman berdasarkan Slug

Termasuk bagian View Berbasis Class dalam perjalanan Django di Coddy. Pelajaran 6 dari 18.

/jobs/7/ tidak memberi tahu apa pun tentang pekerjaan tersebut. /jobs/python-developer-brightline/ menjelaskan pekerjaan itu kepada orang-orang dan mesin pencari. Bagian yang mudah dibaca itu disebut slug: kata-kata huruf kecil yang disambungkan dengan tanda hubung. Setiap Job sudah memilikinya di field slug.

Saat argumen URL bernama slug, DetailView mencari baris yang field slug-nya cocok. Kedua nama tersebut bisa diubah. Situs resep dengan rute "recipes/<slug:recipe_slug>/" memberi tahu view:

class RecipeDetailView(DetailView):
    model = Recipe
    slug_url_kwarg = "recipe_slug"

slug_url_kwarg menentukan nama argumen URL dan slug_field menentukan nama field model. Nilai default keduanya adalah "slug". Jika kamu mengganti nama argumen URL tanpa memberi tahu view, view tidak akan menemukan pk maupun slug, lalu mengalami crash.

challenge icon

Tantangan

Mudah

Ubah halaman lowongan kerja dari id menjadi slug:

  • Di jobs/urls.py, rute detail menggunakan slug lowongan kerja, bukan pk-nya.
  • Di job_list.html, setiap tautan meneruskan slug lowongan kerja.

Tekan Run dan klik Python Developer di /jobs/: alamatnya adalah /jobs/python-developer-brightline/.

Coba sendiri

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"),
]

Semua pelajaran di View Berbasis Class

Latihan sendiri: Playground Django