在 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/