Answers:
您需要添加django.core.context_processors.request
到模板上下文处理器。然后,您可以像这样访问它们:
{{ request.session.name }}
如果使用的是自定义视图,请确保要传递RequestContext实例。来自文档的示例:
from django.shortcuts import render_to_response
from django.template import RequestContext
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
2013年更新:从我仍然收到此答案的支持来看,人们对它的帮助仍然存在,距最初编写已经三年多了。但是请注意,尽管上面的视图代码仍然有效,但是如今有一种更简单的方法可以执行此操作。render()
是与极为相似的功能render_to_response()
,但它会RequestContext
自动使用,而无需显式传递它:
from django.shortcuts import render
def some_view(request):
# ...
return render(request, 'my_template.html', my_data_dictionary)
HttpResponse
课程根本不涉及模板,因此问题似乎不相关……
我正在使用Django 1.9(2016年3月),要开始{{ request.session.name}}
工作,我的设置是这样的:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
从以前的答案的区别是:'django.core.context_processors.request'
成为'django.template.context_processors.request'
django.template.context_processors.request
已经在设置文件中了:D
在您的settins.py中
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
您的看法,也许像这样。
from django.shortcuts import render_to_response, render
from django.http import HttpResponse, HttpResponseRedirect
from django.template import RequestContext
@login_required()
def index_admin(request):
return render_to_response('carteras/index_admin.html', {}, context_instance=RequestContext(request))
继续@Ludwik Trammer答案,如何添加TEMPLATE_CONTEXT_PROCESSORS
对于django 1.6,在settings.py中添加引用以下代码的TEMPLATE_CONTEXT_PROCESSORS,然后{{ request.session.name }}
在模板文件中使用。
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request")
参考https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS
请注意,您应该在设置中使用完整的代码。"django.core.context_processors.request"
单独使用将导致覆盖默认设置。
现在可能为时已晚。如果直接设置TEMPLATE_CONTEXT_PROCESSORS
为settings.py
,则将丢失所有默认TEMPLATE_CONTEXT_PROCESSORS
值。这是我在我的工作settings.py
:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as DEFAULT_TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_TEMPLATE_CONTEXT_PROCESSORS + (
'django.core.context_processors.request',
)