python - Django 中 request.user 与 get_user(request) 的区别?

标签 python django

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

  • user = request.user
  • user = get_user(request) 其中 get_user() 是从 django.contrib.auth 导入的。

有什么区别? get_user() 似乎对请求 session 做了很多验证。

哪个更好?

最佳答案

‍‍‍‍request.user 实际上是用 get_user(request) 填充的。

发生在AuthenticationMiddleware:

request.user = SimpleLazyObject(lambda: get_user(request))

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

关于python - Django 中 request.user 与 get_user(request) 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73769092/

相关文章:

python - Defaultdict 和 Constant_factory 与 lambda

python - python是否优化了未使用的变量?

python - 从查询集值访问 Django 模板上的外键

django - django settings.py 中的相对路径

python - 为什么我在 Django 中收到表单无效错误?

python - Pytest:修补全局变量

python - 使用 dictConfig 时命名记录器不写入

python - get_dummies() 用于多个 Pandas DataFrame

django - Django-如何从用户输入中增加整数字段?

Django 多选小部件?