我通过灯具添加了超级用户:
python manage.py loaddata data.json
这是我的数据.json:
[
{
"pk": 1,
"model": "auth.user",
"fields": {
"username": "admin",
"first_name": "admin",
"last_name": "admin",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"groups": [],
"user_permissions": [],
"password": "admin",
"email": "admin@mail.com"
}
}
]
然后我尝试登录到管理员,但出现错误:
"请输入正确的员工帐户用户名和密码。请注意,这两个字段都可能区分大小写。
输出
dumpdata auth.user --indent 4 > output.json
显示
[
{
"pk": 1,
"model": "auth.user",
"fields": {
"username": "admin",
"first_name": "admin",
"last_name": "admin",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"last_login": "2017-09-17T13:01:51.009Z",
"groups": [],
"user_permissions": [],
"password": "admin",
"email": "admin@mail.com",
"date_joined": "2017-09-17T13:01:51.009Z"
}
}
]
我使用 django1.6 和 sqlite3
我错了什么?
像所有行为良好的Web框架一样,Django将密码存储为哈希。根据设计,哈希是单向的:您无法从存储的哈希中获取用户的密码。
我怀疑loaddata
只是将数据按原样插入您的数据库。dumpdata
显示"password": "admin"
的事实证实了这一点。您将无法以这种方式创建的用户身份登录,因为没有密码会散列到"admin"
。
最好的解决方案可能是通过createsuperuser
使用您想要的密码创建一个admin
用户,然后使用dumpdata
生成您的灯具。createsuperuser
将负责散列您的密码。您应该在密码字段中看到一个长而随机的字符串。