【发布时间】:2015-06-05 15:24:06
【问题描述】:
这是比具体代码问题更多的理论问题。
我有点困惑如何在 Django 中存储和访问用户名、用户电子邮件等信息。
据我所知:
我可以像{{user.username}} 一样访问它,如果我之前通过使用render() 或render_to_response() 和里面的RequestContext 来访问它。如果我使用HttpResponseRedirect 进入页面,则我无法访问user.username,并且这里只是空白。
我想知道的:
无论我如何到达那里,有没有办法从每个页面访问用户数据?我的意思是即使我根本不使用任何视图,例如手动输入地址。
奇怪的是,我一直认为用户名之类的数据可以通过会话访问,但是关于这个主题的 10 篇文章中有 9 篇总是谈论 RequestContext 和其他将值从一个页面传递到另一个页面的东西。
我还阅读了有关自定义上下文处理器的信息,但我认为它只适用于特定目的,而不是简单的用户名。
所以也许简而言之,问题是:
如果我想在网站每个页面的角落显示例如用户名 - 我应该怎么做?
这里会发生什么(对于傻瓜)
HttpResponseRedirect 根本不影响任何东西。问题是它正在重定向到不包含 RequestContext 的 render_to_response() 调用。如果我们不指定 RequestContext,它会将其写为空白并强制它覆盖 context_processor.auth 给出的会话数据,因此您在此页面上基本上没有任何上下文数据。
应该怎么做(在我看来)是你总是在你的任何视图中使用render() 或render_to_response() 和RequestContext,不要忘记它。并且完全不用担心各种重定向,因为它们不会影响上下文数据。静态 html 页面从处理器获取上下文数据,它可以工作,我的错是我没有事先检查两次。
【问题讨论】:
标签: django session django-templates django-views django-sessions