一尘不染

始终将用户包括在Django模板上下文中

django

我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送一个唯一的登录URL,该URL就会设置一个cookie,该cookie将始终为将来的请求标识他们。

在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确保必要的变量始终是上下文的一部分?似乎每个视图只是按照自己的喜好设置上下文,并且没有全局上下文总体。有没有没有在每个上下文创建过程中都包括用户的方法?

还是我必须制作自己的自定义快捷方式才能正确设置上下文?


阅读 253

收藏
2020-04-02

共2个答案

一尘不染

从不必在每个视图中显式设置变量的更一般的意义上讲,这听起来像你想研究编写自己的上下文处理器。

从文档:

上下文处理器具有一个非常简单的接口:它只是一个Python函数,该函数接受一个参数,一个HttpRequest对象,并返回添加到模板上下文的字典。每个上下文处理器必须返回一个字典。

2020-04-02
一尘不染

如果已经有in 并且在视图中使用,则无需为用户对象编写上下文处理器。"django.core.context_processors.auth"TEMPLATE_CONTEXT_PROCESSORS RequestContext

如果你使用的是django 1.4或最新版本,则该模块已移至 django.contrib.auth.context_processors.auth

2020-04-02