طلب جانغو في القالب
سؤال
لقد قمت بتمكين معالج طلب جانغو
TEMPLATE_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
ما زلت لا أحتاج إلى طلب المتغير المتاح في القوالب.لقد لتمريرها يدويا.باستخدام Django 1.0.2 في كل مكان على الويب ، يبدو الأمر يتعلق فقط بمعالج طلب التمكين ..
كما أنني أستخدم RequestContext على النحو التالي:
return render_to_response(
'profile.html',
{
'persons':Person.objects.all(),
'person':Person.objects.get(id=id),
'request':request,
},
context_instance=RequestContext(request)
)
لا حظ
يا رتق الاسم الجديد لذلك TEMPLATE_CONTEXT_PROCESSORS
المحلول
إعدادات.py:
TEMPLATE_CONTEXT_PROCESSORS = (
# ...
'django.core.context_processors.request',
# ...
)
نصائح أخرى
template_context_processors بدلاً من template_processors
يرجى العلم أنه اعتبارًا من Django 1.8، تغير هذا إلى إعداد "القوالب"، وفي التكوين الافتراضي، لم يتم تضمين معالج الطلب.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# insert your TEMPLATE_DIRS here
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
# list if you haven't customized them:
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
],
},
},]
ما عليك سوى إضافة معالج الطلب مرة أخرى لإصلاح المشكلة:
'django.core.context_processors.request',
لمزيد من المعلومات، راجع جانغو ترقية المستندات.
هل أنت متأكد من أنك لا تملك request
المتغير المتاح للقالب؟ماذا يحدث عند إزالة الخط
'request':request,
وهذا يختلف عن وقت وجود هذا الخط.إذا تم تحميل القالب الخاص بك بنفس الطريقة في كلتا الحالتين، فإن المشكلة تكمن في القالب الخاص بك.
middleware_classes = (..."Yourfolder.yourfile.yourclass" ، ...فصلك:
فئة AddRequestToTemplate:Process_templaet_response(الذات، الطلب، الاستجابة):Response.context_data['request']=request