我设置了我的Django(1.8)管理系统,允许超级用户交互式地创建新用户。我的用户模型是用
AbstractUser
定制的,这意味着我的管理文件看起来像这样。
admin.py
from django.contrib import admin
from app.models import CPRUser
class UserAdmin(admin.ModelAdmin):
model = CPRUser
extra = 1
admin.site.register(CPRUser, UserAdmin)
而这里是模型。
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专业的经理(我不会知道他们的详细资料)能够在管理中轻松创建新用户。我知道这样一个系统的风险。
在以下方面,文件似乎是相互矛盾的设置这个交互式用户创建 in one section:
"添加用户 "管理页面与标准的管理页面不同,它要求你在允许你编辑用户的其他字段之前选择一个用户名和密码"。
然后再过几段。
"用户密码不在管理中显示(也不存储在数据库中)"
这是我的管理员的屏幕截图。
如何让Django接受通过管理员互动创建的用户的登录尝试?