2015-11-05 1 views
2

Я следую django's doc при создании пользовательской модели пользователя, и я смущен в определении create_user() и create_superuser(). При определении create_user() пароль аргумент передается в NoneКак django знает, что пароль в функции 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 
    ... 

Как Джанго знает, что пароль в create_user() функции? Прошу прощения, если это вопрос о нобе, но мне действительно нужно понять. Не могли бы вы помочь мне понять концепцию здесь. Спасибо.

+0

Я думаю, что это пример для пользовательского пользовательского менеджера. Таким образом, create_user не требует пароля: 'Прототип create_user() должен принимать поле имени пользователя, а также все обязательные поля в качестве аргументов.' – Pynchia

ответ

1

password=None in create_user определение метода означает, что значение None является значением по умолчанию для пароля, но оно все равно может предоставляться вызывающим абонентом.

Если вы не указали пароль для нового пользователя или не прошли None для пароля, Django создаст пользователя с непригодным для использования паролем, то есть пользователь не сможет войти в систему с именем пользователя и паролем.

Это полезно в ситуациях, когда вы хотите применять другие средства аутентификации, как OAuth или OpenID и т.д.

Соответствующие части кода с комментариями:

Почему для create_superuser требуется пароль? На самом деле это не так. Вы всегда можете передать None в качестве пароля, но imho - это потому, что вам нужны особые права и привилегии для суперпользователя, и вы не создаете суперпользователей так же часто, как обычные пользователи.

+0

К ответу. Спасибо! –

Смежные вопросы