我启用了django请求处理器
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
答案 0 :(得分:41)
settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
# ...
'django.core.context_processors.request',
# ...
)
答案 1 :(得分:11)
TEMPLATE_CONTEXT_PROCESSORS 代替 TEMPLATE_PROCESSORS
答案 2 :(得分:6)
请注意,自Django 1.8起,它已更改为“TEMPLATES”设置,并且在默认配置中,不包括请求处理器。
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',
有关详细信息,请参阅Django Upgrading Docs。
答案 3 :(得分:0)
您确定模板没有request
变量吗?删除行
'request':request,
与该行存在时的情况不同。如果您的模板以相同的方式加载,则问题出在您的模板上。
答案 4 :(得分:0)
MIDDLEWARE_CLASSES =( ... 'yourfolder.yourfile.yourclass', ... yourclass:
class AddRequestToTemplate: process_templaet_response(self,request,response): response.context_data [ '请求'] =请求