如果我在 Django 中设置一个 session 变量,例如:
request.session["name"] = "name"
有没有一种方法可以从模板中访问它,或者我必须从 View 中检索它,然后将它传递给模板?
询问是因为我有大约 10 个我想在模板中访问的小 session 变量,将所有 10 个从 View 传递到模板可能会有点困惑。
(我必须使用 session 变量,因为它是一个 HttpResponseRedirect,但将变量存储在数据库中对我来说太过分了。)
那么 - 有什么方法可以直接在模板中获取 session 变量吗?
最佳答案
您需要添加 django.template.context_processors.request
到你的template context processors .然后你可以像这样访问它们:
{{ request.session.name }}
如果您使用自定义 View ,请确保您传递的是 RequestContext 实例。示例取自 documentation :
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 年更新:从我仍然收到的对这个答案的赞成票来看,人们仍然觉得它很有帮助,距离它最初写成三年多了。但是请注意,虽然上面的 View 代码仍然有效,但现在有一种更简单的方法可以做到这一点。 render()
是一个与 render_to_response()
非常相似的函数,但它会自动使用 RequestContext
,无需显式传递它:
from django.shortcuts import render
def some_view(request):
# ...
return render(request, 'my_template.html', my_data_dictionary)
关于Django:从模板中访问 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551933/