Menu
CoddyTech

עמודים לפי 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 וקורסת.

challenge icon

אתגר

קל

העבירו את דפי המשרות ממזהים ל-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 אונליין