2015-11-05 78 views
2

我正在關注創建自定義用戶模型的django's doc,我很困惑定義create_user()create_superuser()。當定義create_user()通過密碼arg是Nonedjango如何知道create_user()函數中的密碼是什麼

def create_user(self, email, date_of_birth, password=None): 
    # create user here 
    ... 

在創建create_superuser()密碼被調用者提供。

def create_user(self, email, date_of_birth, password=None): 
    # create user here 
    ... 

django如何知道create_user()函數中的密碼是什麼?如果這是一個小問題,我很抱歉,但我真的需要了解。你能幫我理解這裏的概念嗎?謝謝。

+0

我認爲這是一個自定義用戶管理器的例子。因此,create_user不需要密碼:'create_user()的原型應接受用戶名字段以及所有必填字段作爲參數。「# – Pynchia

回答

1

password=None in create_user方法定義意味着None是密碼的默認值,但它仍然可以由調用者提供。

當你不提供新的用戶密碼或傳遞None密碼Django會創建一個無法使用的密碼,這就意味着,用戶將無法使用用戶名和密碼登錄的用戶。

您要執行類似的OAuth和OpenID的等其他認證意味着它在場景中有用

相關的代碼註釋部分:

爲什麼對create_superuser需要密碼?其實不然。您始終可以通過None作爲密碼,但是imho是因爲您需要超級用戶的特權和特權,並且您不像常規用戶那樣經常創建超級用戶。

+0

要點答案。謝謝! –

相關問題