python - 为什么我无法验证通过自定义管理.py 命令创建的 Django 用户?

标签 python django django-authentication django-users django-manage.py

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

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

from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User

class Command(BaseCommand):
    help = 'Creates a Django admin user'

    def handle(self, *args, **options):
        username = raw_input('Admin username: ')
        password = raw_input('Admin password: ')

        try:
            new_user = User.objects.create_user(username, password, '')
            new_user.is_superuser = True
            new_user.is_staff = True
            new_user.save()
            self.stdout.write('Admin created successfully')
        except:
            self.stdout.write('Sorry, there was a problem creating a new user in the database.')

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

为了演示该问题,以下是使用 createadminshell 进行测试的输出:

创建管理员

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

如您所见,用户存在,但我无法对他们进行身份验证。当我尝试从 login View 中对服务器上的用户进行身份验证时,我会得到类似的行为。知道可能是什么问题吗?

最佳答案

create_user 的第二个位置参数是电子邮件,而不是密码。

您应该使用关键字参数:

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

关于python - 为什么我无法验证通过自定义管理.py 命令创建的 Django 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49578337/

相关文章:

python - pygame 问题创建音乐静音按钮并显示背景

python - 来自单个词典的词典列表

python - pyaudio 和 pynput : recording while a key is being pressed/held down

Python - 如何通过考虑所有组合来绘制二维图?

Django-grappelli 管理员 : No reverse match error

django - 为什么 Django Rest Framework - 序列化程序验证不起作用

django - 如何限制Django中同一帐户登录的并发用户数

python - 干草堆elasticsearch RealtimeSignalProcessor仅更新 “default”连接

javascript - Django pbkdf2_sha256 JS实现

python - 覆盖 django 管理员身份验证