Django:从模板中访问会话变量?

如果我在Django中设置一个会话变量,如:

request.session["name"] = "name"

有一种方法,我可以从模板中访问它,或者我必须从一个视图中检索它,然后将其传递给模板?

问,因为我有10个小的会话变量,我想在模板中访问,并将所有10从视图传递到模板可能会有点凌乱。

(我必须使用会话变量,因为它是一个HttpResponseRedirect,但存储在数据库中的变量是overkill为了我的目的。)

所以 – 任何方式直接在模板中抓取会话变量?

你需要添加django.core.context_processors.request到你的template context processors.然后你可以访问他们这样:

{{ request.session.name }}

如果您使用自定义视图,请确保您正在传递一个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年:根据upvote我仍然收到这个答案,人们仍然发现它有帮助,超过三年后,它最初写。请注意,虽然上面的视图代码仍然有效,但现在有一个更简单的方法这样做。 render()是一个非常类似于render_to_response()的函数,但它自动使用RequestContext,而不需要显式地传递它:

from django.shortcuts import render

def some_view(request):
    # ...
    return render(request, 'my_template.html', my_data_dictionary)
http://stackoverflow.com/questions/2551933/django-accessing-session-variables-from-within-a-template

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Django:从模板中访问会话变量?