Python 为什么可以';是否验证通过自定义manage.py命令创建的Django用户?

Python 为什么可以';是否验证通过自定义manage.py命令创建的Django用户?,python,django,django-authentication,django-users,django-manage.py,Python,Django,Django Authentication,Django Users,Django Manage.py,这件事把我彻底难住了。我有一个模型扩展了Django中的基本用户模型,因此我正在编写一个自定义的manage.py命令来创建超级用户。它似乎工作正常,但由于某些原因,我通过这个自定义命令创建的任何用户都无法通过Django的身份验证。当我检查数据库时,确实正在创建用户,并且所有信息都是正确的 以下是名为createadmin.py的文件中我的自定义命令的代码(我省略了与问题无关的代码位): 现在,如果我使用python manage.py createadmin运行此命令,一切似乎都正常,并且用

这件事把我彻底难住了。我有一个模型扩展了Django中的基本用户模型,因此我正在编写一个自定义的
manage.py
命令来创建超级用户。它似乎工作正常,但由于某些原因,我通过这个自定义命令创建的任何用户都无法通过Django的身份验证。当我检查数据库时,确实正在创建用户,并且所有信息都是正确的

以下是名为
createadmin.py
的文件中我的自定义命令的代码(我省略了与问题无关的代码位):

现在,如果我使用
python manage.py createadmin
运行此命令,一切似乎都正常,并且用户是在数据库中创建的

为了演示这个问题,下面是使用
createadmin
shell
进行测试的输出:

createadmin

Admin username: testadmin
Admin password: admin
Admin created successfully
壳牌公司

>>> from django.contrib.auth.models import User
>>> from django.contrib.auth import authenticate
>>> user = User.objects.get(username='testadmin')
>>> user.is_superuser
True
>>> user.is_active
True
>>> user.is_staff
True
>>> authenticate(username='testadmin', password='admin') is None
True

如您所见,用户存在,但我无法对其进行身份验证。当我尝试从
登录
视图中对服务器上的用户进行身份验证时,会出现类似的行为。有什么问题吗?

创建用户的第二个位置参数是电子邮件,而不是密码

您应该使用关键字参数:

new_user = User.objects.create_user(username, password=password)

老兄,你是我的救星!非常感谢
new_user = User.objects.create_user(username, password=password)