Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django管理员:在浏览器中创建用户_Python_Django_Django Admin - Fatal编程技术网

Python Django管理员:在浏览器中创建用户

Python Django管理员:在浏览器中创建用户,python,django,django-admin,Python,Django,Django Admin,我已经设置了Django(1.8)管理员,允许超级用户以交互方式创建新用户。我的用户模型是使用AbstractUser定制的,这意味着我的管理文件如下所示: 管理员 以下是模型: class CPRUser(AbstractUser): student = models.PositiveIntegerField(verbose_name=_("student"), default=

我已经设置了Django(1.8)管理员,允许超级用户以交互方式创建新用户。我的用户模型是使用
AbstractUser
定制的,这意味着我的管理文件如下所示:

管理员

以下是模型:

class CPRUser(AbstractUser):
    student = models.PositiveIntegerField(verbose_name=_("student"),
                                            default=0,
                                            blank=True)
    saved = models.IntegerField(default=0)
这似乎工作正常,我可以通过管理员和设置密码,用户名和所有其他自定义字段的新用户。但是,当我尝试使用新创建的用户登录时,身份验证过程的某些部分会失败。我从一个使用
auth_views.login
视图和样板django登录模板的页面登录

另一方面,如果我在django shell中使用
manage.py createsuperuser
createuser()
创建新用户,这些用户可以正常登录。这让我怀疑这与密码存储或散列有关-目前在管理员中,我可以键入新用户的密码。问题是,这就是我想要做的。我怎样才能得到这个期望的结果?我希望不懂IT的经理(我不需要他们的详细信息)能够轻松地在管理员中创建新用户。我知道这样一个系统的风险

在一个部分中,文档似乎相互矛盾:

“添加用户”管理页与标准管理页不同,它要求您在编辑用户的其余字段之前选择用户名和密码

接下来是几段:

“用户密码不显示在管理员中(也不存储在数据库中)”

以下是我的管理员的屏幕截图:

如何让Django接受通过管理员以交互方式创建的用户的登录尝试?

这在

如果自定义用户模型扩展了django.contrib.auth.models.AbstractUser,则可以使用django现有的django.contrib.auth.admin.UserAdmin类


因此,扩展
UserAdmin
应该可以做到这一点。

您能提供有关身份验证失败的更多详细信息吗?也就是说,确切的异常和消息是什么?@BasicWolf这是问题的一部分-挖掘身份验证失败的最简单方法是什么?我的代码中没有一个进行身份验证-这都是django auth黑盒。--但是,当我尝试使用新创建的用户登录时,身份验证过程的某些部分失败。-那么,您究竟是如何尝试登录新创建的用户的呢?对不起,我们已经更新了问题以使其更清晰。我使用的是
auth_view.login
视图和django登录模板样板。首先确保用户和密码实际存储在数据库中。验证存储的密码是否为哈希值,而不是原始密码。接下来,在django shell中执行测试:
来自django.contrib.auth.forms import AuthenticationForm
AuthenticationForm(数据={'username':'USER\u NAME\u HERE','password':'RAW\u password\u HERE'})。是否有效()
-此值应计算为
True
。作为最后手段-只需通过IDE或pudb调试到
login()
的代码中。
class CPRUser(AbstractUser):
    student = models.PositiveIntegerField(verbose_name=_("student"),
                                            default=0,
                                            blank=True)
    saved = models.IntegerField(default=0)