كيف تعلمت عن معالجات السياق (Context Processors) في Django

أنا أقوم ببناء متجر إلكتروني للإكسسوارات باستخدام Django.

قمت ببناء شريط تنقل (navbar) لعرض فئات المنتجات. في البداية، قمت بكتابة الفئات بشكل ثابت (hard-coded). عمل هذا الأمر لفترة من الوقت.

ثم واجهت مشكلة. إذا أضفت فئة جديدة، يجب عليّ تحديث شريط التنقل يدويًا. هذا أمر غير فعال.

كان تفكيري الأول هو تمرير الفئات عبر السياق (context) في الـ view الخاص بي. وسرعان ما واجهت مشكلة ثانية؛ فكل صفحة تحتاج إلى شريط التنقل، وهذا يعني أنني سأضطر لتكرار نفس الكود في كل view، مما يؤدي إلى كود فوضوي.

وجدت طريقة أفضل: Django Context Processors.

تجعل معالجات السياق (Context processors) البيانات متاحة لجميع القوالب (templates). لست بحاجة لتمرير البيانات من كل view.

استخدم معالجات السياق من أجل:

معالج السياق هو دالة Python. تأخذ كائن الطلب (request object) وتُرجع قاموسًا (dictionary).

مثال:

def custom_context(request):
    return {
        "custom_value": "hello from context processors"
    }

يجب عليك تسجيل الدالة في الإعدادات (settings). أضفها إلى قائمة context_processors داخل إعداد TEMPLATES.

مثال:

'OPTIONS': {
    'context_processors': [
        'myapp.context_processors.custom_context',
    ],
},

الآن، يمكنك استخدام البيانات في القوالب الخاصة بك بهذا الشكل:

{{ custom_value }}

حل هذا مشكلتي. أصبح شريط التنقل الخاص بي يحصل الآن على بيانات الفئات تلقائيًا في كل صفحة. لم أعد أكرر الكود.

بناء الميزات غالبًا ما يعلمك مفاهيم جديدة. بالنسبة لي، كان هذا هو معالجات السياق (context processors).

المصدر: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h