【问题标题】:django how to store an object in session to use in multiple templatesdjango 如何在会话中存储对象以在多个模板中使用
【发布时间】:2013-12-13 15:27:56
【问题描述】:

我正在使用 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 %}

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

诚挚的问候, 汉斯

【问题讨论】:

标签: django templates session view request


【解决方案1】:

我想你的意思

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

而不是

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

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


更新:您还需要确保django.core.context_processors.request 在您的设置文件中的template context processors 之中。另见this answer

【讨论】:

  • 我的mistkae 确实应该被删除。但这并没有解决我的第一个问题。即使它是真的,它也总是会到达 else 语句(使用带有打印的终端来检查)
  • django.core.context_processors.request 在你的TEMPLATE_CONTEXT_PROCESSORS 中吗?
  • Ghehe 你这个人,得到了整个名单,但那个人不见了 :)
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 2012-08-19
  • 2012-09-14
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多