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.
Tantangan
MudahUbah halaman lowongan kerja dari id menjadi slug:
- Di
jobs/urls.py, rutedetailmenggunakan 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
2Tampilan Generik untuk Menampilkan Data
ListViewDetailViewLatihan sendiri: Playground Django