python - 添加到 django request.user 变量

标签 python django authentication

在 django 中,我使用 authenticate() 函数让用户登录。使用 request.user,我可以访问从 users 表中提取的登录用户信息。如果我执行 request.user.id,我可以获得用户的 ID。在任何模板中,根据任何请求,我都可以执行 user.username 来获取用户名。

有没有一种方法可以将值添加到 request.user 变量,以便我可以在整个应用程序和模板中使用它们?

例如,我希望在用户登录网站时设置request.user.timezone;我应该能够在模板和我的 View 中访问此变量。

最佳答案

你可以写一个简单的中间件:

class UserTZMiddleware(object):
    def process_view(self, request, view_func, view_args, view_kwargs):
        if request.user.is_authenticated():
            request.user.timezone = evaluate_tz()

然后将其附加到 settings.py 文件中的 MIDDLEWARE_CLASSES 中:

MIDDLEWARE_CLASSES = (
    ....,
    'myapp.UserTZMiddleware',
)

关于python - 添加到 django request.user 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718536/

相关文章:

javascript - 使用python将base64字符串转换为png图像

Java 手动客户端证书身份验证

python - 如何在同一个应用程序中拥有两个登录/身份验证策略?

python - Pyspark 中的 Ngram 频率排名

python - 选择具有特殊条件的行

python - Numpy:切片后的垃圾收集

python - Django - 使用 Celery 7 天后更新字段值

python - 添加新用户时修改用户配置文件失败,错误代码为 "Duplicate entry error"

.net - 使用 System.DirectoryServices 验证域用户

python - 远程 SSH 服务器访问本地文件