2010-03-15 23 views
1

成員變量我已經失去了一些時間,由於用戶身份驗證我的應用程序中的錯誤。我認爲這有點令人困惑,但也許有人可以解釋其中的原因,而且在我看來這很合乎邏輯。在Django中,爲什麼user.is_authenticated方法,而不是像is_staff

user.is_staff是一個成員變量,而user.is_authenticated是一種方法。但is_authenticated只返回True或False,具體取決於類別爲UserAnonymousUser(請參閱http://docs.djangoproject.com/en/dev/topics/auth/

是否有原因?爲什麼user.is_authenticated是一種方法?

在此先感謝

+0

我已經被這個幾次了。這個名字肯定會*聽起來像一個布爾值,它可以是True或False,除非您更改登錄狀態,否則它不會更改。它不是數據庫字段的事實不應該阻止它成爲每個實例的屬性。 – 2010-03-15 16:38:30

回答

7

因爲is_staff是數據庫字段,並且is_authenticated不是(因爲這將是奇怪)。也許is_authenticated可能會變成一個屬性,但django開發人員必須已經決定,使其功能會更清晰。

0

is_authenticated()只檢查用戶是否提供了有效的用戶名和密碼。 它不允許以訪客用戶身份登錄用戶(如果我沒有錯的話)。

+3

不,is_authenticated對於匿名和真實且經過身份驗證的用戶來說只是False。至少在後備箱裏;-) – gruszczy 2010-03-15 12:15:23

相關問題