עמודים לפי 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 בלי לעדכן את התצוגה, היא לא מוצאת לא pk ולא slug וקורסת.
אתגר
קלהעבירו את דפי המשרות ממזהים ל-slugs:
- ב-
jobs/urls.py, הנתיבdetailמקבל את ה-slug של המשרה במקום את ה-pk שלה. - ב-
job_list.html, כל קישור מעביר את ה-slug של המשרה.
לחצו על Run ואז על Python Developer ב-/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"),
]
כל השיעורים ביחידה תצוגות מבוססות מחלקות
תרגלו בעצמכם: Django אונליין