如果我在Django中设置会话变量,例如:
request.session["name"] = "name"
有什么方法可以从模板中访问它,还是必须从视图中检索它,然后将其传递给模板?
询问是因为我想在模板中访问大约10个小会话变量,然后将所有10个从视图传递到模板可能会有些混乱。
(我必须使用会话变量,因为它是HttpResponseRedirect,但是出于我的目的,将变量存储在数据库中是过大的。)
那么-有什么方法可以直接在模板中获取会话变量?
你需要添加django.core.context_processors.request到模板上下文处理器。然后,你可以像这样访问它们:
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))
从我仍然收到此答案的支持来看,人们对它的帮助仍然存在,距最初编写已经三年多了。但是请注意,尽管上面的视图代码仍然有效,但是如今有一种更简单的方法可以执行此操作。render()是与极为相似的功能render_to_response(),但它会RequestContext自动使用,而无需显式传递它:
render()
render_to_response()
RequestContext
from django.shortcuts import render def some_view(request): # ... return render(request, 'my_template.html', my_data_dictionary)