Django Admin:在浏览器中创建用户

cs_*_*ckX 4 python django django-admin

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

\n

管理员.py

\n
from django.contrib import admin\nfrom app.models import CPRUser\n\nclass UserAdmin(admin.ModelAdmin):\n\n    model = CPRUser\n    extra = 1\n\nadmin.site.register(CPRUser, UserAdmin)\n
Run Code Online (Sandbox Code Playgroud)\n

这是模型:

\n
class CPRUser(AbstractUser):\n    student = models.PositiveIntegerField(verbose_name=_("student"),\n                                            default=0,\n                                            blank=True)\n    saved = models.IntegerField(default=0)\n
Run Code Online (Sandbox Code Playgroud)\n

这似乎工作正常,我可以通过管理并设置新用户的密码、用户名和所有其他自定义字段。但是,当我尝试使用新创建的用户登录时,身份验证过程的某些部分失败。我从使用视图auth_views.login和样板 django 登录模板的页面登录。

\n

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

\n

这些文档在一个部分中设置此交互式用户创建似乎是矛盾的:

\n

“\xe2\x80\x9cAdd user\xe2\x80\x9d 管理页面与标准管理页面不同,它要求您选择用户名和密码,然后才能编辑用户的其余部分\xe2\x80\x99s领域。”

\n

然后是几段:

\n

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

\n

这是我的管理员的屏幕截图:

\n

在此输入图像描述

\n

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

\n

Zau*_*bov 6

文档中对此进行了描述,

\n
\n

如果您的自定义用户模型扩展了 django.contrib.auth.models.AbstractUser,您可以使用 Django\xe2\x80\x99s 现有的 django.contrib.auth.admin.UserAdmin 类。

\n
\n

因此,扩展UserAdmin应该可以解决问题。

\n