关于从shell创建用户时python:django哈希密码

django hash password when create user from shell

我正在使用此示例创建自定义用户模型。我想通过Django shell进行测试。

当我使用MyUser.objects.create(email='[email protected]', data_of_birth=datetime.date.today(), password='somepassword')从django shell创建用户时,密码不会被散列,而是以纯文本形式存储在数据库中。

但是,如果我通过django管理门户网站创建用户,则会将其存储为哈希值。

我需要怎么做才能使它甚至通过Shell也存储为哈希?我需要实现自己的某些功能吗?

Django版本1.7.3


使用User.set_password()

1
2
3
user = MyUser(email='[email protected]'), ...)
user.set_password('somepassword')
user.save()


1
2
3
4
staff = Staff()
staff.username = username
staff.set_password(password)
staff.save()

此处staff是从USER继承的模型,当用户输入密码时,您只需提供给set_password,django会自动转换为hasble pwd