0

我想更新 django 中 auth_user 表的一些字段。实际上我正在将一些用户从一个网站迁移到另一个网站,所以我想更新 auth_user 表中的密码字段。但是当我使用更新查询时,它给了我一些错误

我尝试过的一些事情

values=User.objects.get(username=request.POST['username'])
        values.password=request.POST['password']
        values.password.save()

它给出了“unicode”对象的错误没有属性“保存”

如果我试过这个

values=User.objects.get(username=request.POST['username']).update(password=request.POST['password'])

那么错误是“用户”对象没有属性“更新”

实际上我不想向用户发送电子邮件以更新他们的密码并将他们重定向到忘记密码页面。但是,每当用户尝试登录站点并且如果他的密码不匹配但他正确输入了密码但由于迁移他的密码在 django 中不起作用,那么他输入的密码必须在 auth_user 表中更新(加密密码)。

在这两者之间,我确保该用户是前一个站点的身份验证用户。

所以请给我一些建议,以便我可以在 auth_user 表中更新他的密码。

4

2 回答 2

3

django 中的密码存储为 sha256 哈希,因此设置

user.password = 'new password'

这不是一个好主意。幸运的是,django 有一些方法可以处理你的密码哈希。第二件事:

values.password.save()

在这里,您尝试在密码对象上执行 save() 方法,密码对象是字符串,而不是用户对象。values.save()会更好,但仍然不正确。你想要做的是:

values.set_password('new password') # Takes care of hashing
values.save()

更多关于 Django 文档中的主题

于 2013-01-15T09:06:46.950 回答
0

(代表欧普)

我用了这个,问题解决了

u = User.objects.get(username__exact='john')
u.set_password('new password')
u.save()
于 2013-03-19T12:50:16.910 回答