姜戈。当我们登录时,我们如何自动从 AnonymousUser 转移到 AbstractBaseUser

Django. When we login how we are automatically moved from AnonymousUser to AbstractBaseUser

我注意到当我们登录 Django 时,我们不再是 AnonymousUser(在 models.py 中),而是成为 AbstractBaseUser(在 models.py 中)。

django 如何处理这个变化?

基本上是在django/contrib/auth/middleware.pyAuthenticationMiddleware里面:request.user = SimpleLazyObject(lambda: get_user(request))

从同一模块调用 get_user

def get_user(request): if not hasattr(request, '_cached_user'): request._cached_user = auth.get_user(request) return request._cached_user

最后 get_user 来自 django/contrib/auth/__init__.py 其中 returns return user or AnonymousUser()。 您很可能对最后一个感兴趣。