الروابط المسماة
جزء من قسم أساسيات 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/"، وسيتبع كل عنوان مُنشأ من الاسم هذا التغيير.
التحدي
سهلاربط الصفحة الرئيسية بصفحة «نبذة عنا» باستخدام الاسم.
- في
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»: ستُفتح صفحة «نبذة عنا».
جرّب بنفسك
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
تدرّب بنفسك: Playground لـ Django