在Django中,为什么user.is_authenticated是一个方法而不是像is_staff这样的成员变量

时间:2010-03-15 09:02:05

标签: python django django-authentication

由于用户身份验证,我的应用中的错误已经丢失了一些时间。我认为这有点令人困惑,但也许有人可以解释原因,这对我来说非常符合逻辑。

user.is_staff是成员变量,而user.is_authenticated是方法。但是,is_authenticated仅返回True或False,具体取决于该类是User还是AnonymousUser(请参阅http://docs.djangoproject.com/en/dev/topics/auth/

有原因吗?为什么user.is_authenticated是一种方法?

提前致谢

3 个答案:

答案 0 :(得分:8)

因为is_staff是数据库字段而is_authenticated不是(因为那会很奇怪)。也许is_authenticated可以变成一个属性,但是django开发者必须已经决定,使它成为一个函数会更清楚。

答案 1 :(得分:0)

is_authenticated()只检查用户是否提供了有效的用户名和密码。 它不允许以访客用户身份登录用户(如果我没有错)。

答案 2 :(得分:0)

is_authenticated()是用于检查天气用户当前对象是否已填充的功能。

因为数据库中不需要填充对象,所以没有必要,

如果正确填充,则仅该特定对象数据存储在数据库中。

因此,is_authenticated()是方法而不是字段 属于user.is_staff已归档,用于表示特定的用户数据位于staff ex:-super_user下。为了区分用户,我们需要存储在数据库中