django如何知道create_user()函数

时间:2015-11-05 20:41:24

标签: python django django-users

我正在关注django's doc创建自定义用户模型,但我很难定义create_user()create_superuser()。定义create_user()时,传递的密码arg为None

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()函数中的密码是什么?如果这是一个菜鸟问题,我很抱歉,但我真的需要了解。你能帮我理解这里的概念吗?谢谢。

1 个答案:

答案 0 :(得分:1)

password=None方法定义中的create_user表示None是密码的默认值,但仍可由调用者提供。

如果您没有为新用户提供密码或者您传递None密码,Django将创建具有不可用密码的用户,这意味着用户将无法使用用户名和密码登录。

在您希望强制执行其他身份验证方式(如OAuth或OpenID等)的情况下,它非常有用。

带注释的相关代码部分:

为什么需要create_superuser密码?实际上并非如此。您始终可以将None作为密码传递,但是因为您需要超级用户的特殊权限和权限,并且您不像常规用户那样经常创建超级用户。