Search code examples
pythondjangodjango-authentication

In Django, why is user.is_authenticated a method and not a member variable like is_staff


I've lost some time with a bug in my app due to user authentication. I think that it's a bit confusing but maybe someone can explain the reason and it will appear to me very logical.

The user.is_staff is a member variable while user.is_authenticated is a method. However is_authenticated only returns True or False depending if the class is User or AnonymousUser (see http://docs.djangoproject.com/en/dev/topics/auth/)

Is there a reason for that? Why user.is_authenticated is a method?

Thanks in advance


Solution

  • Because is_staff is a database field and is_authenticated is not (since that would be strange). Maybe is_authenticated could be turned into a property, but django devs must have decided, that making it a function would be clearer.