Django 中 request.user 与 get_user(request) 之间的区别?

ple*_*unt 3 python django

我注意到有两种方法可以从请求中获取用户对象(假设用户已经登录并且会话有效):

  • user = request.user
  • user = get_user(request)get_user()是从哪里进口的django.contrib.auth

有什么不同?get_user()似乎对请求会话做了很多验证。

哪个更好?

小智 8

\xe2\x80\x8d\xe2\x80\x8d\xe2\x80\x8d\xe2\x80\x8drequest.user实际上填充了get_user(request).

\n

它发生在AuthenticationMiddleware

\n
request.user = SimpleLazyObject(lambda: get_user(request))\n
Run Code Online (Sandbox Code Playgroud)\n

所以当你得到 时request.user,你实际上得到了get_user(request)结果。

\n