我注意到有两种方法可以从请求中获取用户对象(假设用户已经登录并且会话有效):
user = request.user
user = get_user(request)
从django.contrib.auth
导入get_user()
。
有什么区别?get_user()
似乎对请求会话进行了大量验证。
哪个更好?
request.user
实际上填充了get_user(request)
。
它发生在AuthenticationMiddleware
:
request.user = SimpleLazyObject(lambda: get_user(request))
所以当你得到request.user
,你实际上得到了get_user(request)
结果。