django如何在会话中存储对象以在多个模板中使用

时间:2013-11-27 19:50:21

标签: django templates session view request

我正在使用django,我想存储一个对象(在会话中?),所以我可以在多个模板中使用它。所以类似于总是可访问的“用户”,id喜欢添加我自己的一个。所以我不必每次都在渲染中添加它(请求,

到目前为止我尝试了什么:

def login_character(request, character_name):
    request.session['character'] = Character.objects.get(name=character_name)
    return HttpResponseRedirect(reverse('index'))

模板:

{% if 'character' in request.session %}
    <p>Jeej there is some character</p>
    {{ request.session.character.name }}
{% else %}
    <p>Nope, nothing here</p>
{% endif %}

但这似乎不起作用, 有人可以帮助我或指出正确的方向吗?

亲切的问候, 汉斯

1 个答案:

答案 0 :(得分:3)

我认为你的意思是

{% if 'character' in request.session %}

而不是

{% if 'character' in request.session['character'] %}

此外,您写道您需要会话,因为您希望始终可以访问对象,而无需在每个视图中明确添加它。在这种情况下,我认为template context processor可能是更好的选择。


更新:您还需要确保django.core.context_processors.request位于设置文件中的template context processors之内。另请参阅this answer