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