В Django почему user.is_authenticated является методом, а не переменной-членом, такой как is_staff - PullRequest
1 голос
/ 15 марта 2010

Я потерял некоторое время с ошибкой в ​​моем приложении из-за аутентификации пользователя. Я думаю, что это немного сбивает с толку, но, возможно, кто-то может объяснить причину, и она покажется мне очень логичной.

user.is_staff является переменной-членом, а user.is_authenticated является методом. Однако is_authenticated возвращает только True или False в зависимости от того, является ли класс User или AnonymousUser (см. http://docs.djangoproject.com/en/dev/topics/auth/)

Есть ли причина для этого? Почему user.is_authenticated метод?

Заранее спасибо

Ответы [ 2 ]

8 голосов
/ 15 марта 2010

Потому что is_staff - это поле базы данных, а is_authenticated - нет (поскольку это было бы странно). Возможно, is_authenticated можно было бы превратить в свойство, но разработчики Django, должно быть, решили, что сделать его функцией будет более понятным.

0 голосов
/ 15 марта 2010

is_authenticated () просто проверяет, что пользователь предоставил правильное имя пользователя и пароль. Это не позволило бы войти в систему как гость (если я не ошибаюсь).

...