البرمجة

تغييرات محللات السياق في Django 1.10

في Django 1.10، تمت إزالة django.core.context_processors.request وهذا التغيير يأتي كجزء من جهود Django لتبسيط وتحسين هيكلية التطبيق وزيادة مرونته. سبق أن كانت هذه الميزة متاحة لتوفير طريقة سهلة للوصول إلى كائن الطلب (request) داخل القوالب دون الحاجة إلى تمريرها يدويًا من العرض (view).

بدلاً من ذلك، في Django 1.10 وما بعدها، يتم استخدام django.template.context_processors.request كمحلل سياق (context processor) افتراضي. ويتيح هذا المحلل الوصول إلى كائن الطلب (request) مباشرةً في القوالب دون الحاجة إلى أي تعديلات إضافية.

لتمكين هذا المحلل، يجب التأكد من أن 'django.template.context_processors.request' مُضاف إلى قائمة context_processors في إعدادات التطبيق (settings.py). يمكنك القيام بذلك عن طريق إضافة التالي:

python
'context_processors': [ ... 'django.template.context_processors.request', ... ],

عندما تقوم بإضافة هذا المحلل، سيصبح request متاحًا تلقائيًا داخل أي قالب تستخدمه دون الحاجة إلى تمريرها من العرض. على سبيل المثال، يمكنك الوصول إلى متغيرات request مباشرة في قالب HTML الخاص بك بشكل مشابه للتالي:

html
html> <html lang="en"> <head> <meta charset="UTF-8"> <title>My Django Apptitle> head> <body> <p>Welcome, {{ request.user }}!p> <p>Your IP address is: {{ request.META.remote_addr }}p> body> html>

هذا التغيير يسهل على المطورين استخدام البيانات المتعلقة بالطلب داخل القوالب بشكل أكثر أمانًا وسهولة. وبفضل هذه الخطوة، يتم تعزيز أداء وقابلية الصيانة لتطبيقات Django.

المزيد من المعلومات

بالطبع، دعني أوسع شرحي بعض الشيء لتوضيح كيفية عمل محلل السياق (context processor) في Django وكيفية استخدامه بشكل أكثر تفصيلًا.

محلل السياق (context processor) في Django هو جزء مهم من نظام القوالب الذي يتيح لك توفير بيانات إضافية للاستخدام في القوالب بشكل عام. عندما يتم تمكين محلل السياق django.template.context_processors.request، يتم تضمين كائن الطلب (request) تلقائيًا في كل استجواب قالب Django، مما يسهل عليك الوصول إلى بيانات الطلب مثل المستخدم المسجل، ومعلومات الجلسة، والبيانات المخصصة الأخرى.

عندما يتم إضافة 'django.template.context_processors.request' إلى قائمة context_processors في إعدادات التطبيق (settings.py)، يتم استدعاء هذا المحلل في كل عرض (view) المرتبط بقالب Django. وعندما يتم استدعاء المحلل، يتم تمرير كائن الطلب (request) كجزء من السياق (context) إلى القالب.

هذا يعني أنه يمكنك الآن الوصول إلى بيانات الطلب مباشرةً دون الحاجة إلى تمرير كائن الطلب (request) يدويًا من عرض (view) Django. على سبيل المثال، يمكنك استخدام {{ request.user }} في قالب HTML الخاص بك لعرض اسم المستخدم المسجل، ولن تحتاج إلى تمرير request من العرض (view) كمتغير إضافي.

هذه الطريقة لتمرير بيانات الطلب (request) إلى القوالب تجعل العملية أكثر سهولة وأمانًا، وتقلل من الحاجة إلى تمرير المتغيرات في كل استجواب قالب. وبالتالي، يمكنك الآن التركيز على تطوير تطبيقك دون الحاجة إلى التفكير في كيفية تمرير كائن الطلب (request) من العرض (view) إلى القالب في كل مرة.

زر الذهاب إلى الأعلى