כתובות URL בעלות שם
חלק מהיחידה יסודות Django במסלול ה-Django של Coddy. שיעור 10 מתוך 23.
דף הבית צריך לקשר אל אודות. הקלדת "/about/" בכל קישור עובדת עד שהכתובת משתנה, ואז כל הקישורים נשברים. במקום זאת, תן לכל נתיב שם ובנה ממנו את הכתובת. קובץ urls.py של אפליקציית חנות:
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name מציב את השמות במרחב שמות: השם המלא הוא "shop:cart", כך שלשתי אפליקציות יכולה להיות כל אחת כתובת home. reverse() ממיר שם בחזרה לכתובת. כשהחנות כלולה תחת shop/:
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"קרא ל־reverse() בתוך תצוגה. בראש views.py הוא רץ לפני שהנתיבים קיימים.
שנה את "cart/" ל־"basket/", וכל כתובת שנבנתה מהשם תתעדכן בהתאם.
אתגר
קלקשרו את דף הבית ל־About לפי שם.
- ב־
menu/urls.py, הגדירו אתapp_nameלערך"menu"ותנו לכל נתיב שם התואם לתצוגה שלו:home,about,hours,contact,table,drink,order. - ב־
menu/views.py, ייבאו אתreverseמתוךdjango.urls. בתוךhome, הוסיפו קישור עם הכיתובAbout us, שה־hrefשלו הואreverse("menu:about").
לחצו על About us: דף About נפתח.
נסו בעצמכם
from django.urls import path
from . import views
urlpatterns = [
path("", views.home),
path("about/", views.about),
path("hours/", views.hours),
path("contact/", views.contact),
path("table/<int:number>/", views.table),
path("drinks/<slug:slug>/", views.drink),
path("order/", views.order),
]
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות Django
תרגלו בעצמכם: Django אונליין