الصفحات حسب Slug
جزء من قسم واجهات العرض المعتمدة على الأصناف في رحلة Django على Coddy. الدرس 6 من 18.
لا يُخبرك /jobs/7/ بشيء عن الوظيفة. أما /jobs/python-developer-brightline/ فيوضح ماهيتها للناس ومحركات البحث. يُسمّى هذا الجزء المقروء slug: كلمات بأحرف صغيرة تفصل بينها واصلات. لكل Job واحدٌ بالفعل في الحقل slug.
عندما تُسمّى وسيطة URL slug، يعثر DetailView على الصف الذي يطابق فيه الحقل slug هذه القيمة. ويمكن تغيير كلا الاسمين. إذا كان مسار موقع وصفات هو "recipes/<slug:recipe_slug>/"، فعليك إخبار العرض بما يلي:
class RecipeDetailView(DetailView):
model = Recipe
slug_url_kwarg = "recipe_slug"يحدّد slug_url_kwarg اسم وسيطة URL، ويحدّد slug_field حقل النموذج؛ والقيمة الافتراضية لكليهما هي "slug". أعد تسمية وسيطة URL دون إخبار العرض، ولن يعثر على مفتاح أساسي ولا على slug، وسيتعطل.
التحدي
سهلانقل صفحات الوظائف من المعرّفات إلى الأجزاء اللطيفة:
- في
jobs/urls.py، يستخدم المسارdetailالجزء اللطيف للوظيفة بدلًا من مفتاحها الأساسي. - في
job_list.html، يمرّر كل رابط الجزء اللطيف للوظيفة.
اضغط على «تشغيل»، ثم انقر على «مطور Python» في /jobs/: سيكون العنوان /jobs/python-developer-brightline/.
جرّب بنفسك
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"),
]
جميع دروس واجهات العرض المعتمدة على الأصناف
تدرّب بنفسك: Playground لـ Django