اذهب إلى المحتوى
  • 1

كيفية الوصول إلى متغير في الجلسة session داخل القوالب في جانغو Django؟

Mohssen A Mohssen

السؤال

إذا قمت بتعين متغير في الجلسة بالشكل التالي:

request.session["name"] = "mohssen"

 

هل هناك طريقة يمكنني من خلالها الوصول إلى المتغير السابق من داخل قالب template، أو هل يتعين علي استعادته من داخل العرض view، ثم تمريره إلى القالب template؟

السؤال لأن لدي حوالي 10 متغيرات جلسة أرغب في الوصول إليها داخل قالب ، وأعتقد أن تمرير 10 متغيرات لن يكون سهلًا، لذلك كنت أتسأل ما إذا كان هناك طريقة للحصول على متغيرات الجلسة مباشرة داخل القوالب templates؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

بداية تعد session قاموس عادي أو Dictionary يمكنك التعامل مع محتواه علي هذا الأساس , فمثلا للوصول إلى 

request.session["name"] = "your Name"

يمكنك تنفيذ 

print(request.session["name"])

ولكن بداخل القالب أو template سيتغير الحال قليلا إلى الشكل التالي:

<h2> {{ request.session.name }} </h2>

قد تواجه مشكلة عدم ظهور request بشكل عام داخل مشروع Django الخاص بك وهذا وارد في بعض إصدارات Django والسبب عدم التصريح بإستعمال request داخل template ولكن يمكنك حلها من خلال إضافة 

'django.template.context_processors.request'

إلي TEMPLATES بملف settings.py الخاص بك لتبدو مثلا هكذا

settings.py

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            .... بالتأكيد هناك خيارات أخري
            'django.template.context_processors.request', السطر الذي نريد اضافته
            'django.contrib.auth.context_processors.auth',
            .....
            ],
        },
    },
]

ثم اعد تجربة

<h2> {{ request.session.name }} </h2>

 

تم التعديل في بواسطة Mohammed_Emad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...