Django:从模板中访问 session 变量?

标签 django

如果我在 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/

相关文章:

python - Django 接受 AM/PM 作为表单输入

python - 如何在 Django 模型上将月份表示为字段

python - Django collectstatic --no input Yes 而不是 no

django debug false 和内部服务器错误

super 用户的 django @login_required 装饰器

javascript - Django 渲染一个 "in exception"的页面而不是一个可以帮助调试的页面

python - Django:静态图像不会加载

Django admin change_list view get ChangeList queryset - 比我的猴子补丁更好的解决方案

django - 如何在 Django 中正确处理中止的 HTTP 请求

python - 在python中将二维数组解析为字符串