【问题标题】:Issues with auth_user table in djangodjango 中 auth_user 表的问题
【发布时间】:2013-01-15 08:54:15
【问题描述】:

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

我尝试过的一些事情

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

它给出了'unicode'对象没有属性'save

的错误

如果我试过这个

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

那么错误是'User' object has no attribute 'update'

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

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

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

【问题讨论】:

    标签: django django-users


    【解决方案1】:

    django中的密码存储为sha256哈希,所以设置

    user.password = 'new password'
    

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

    values.password.save()
    

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

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

    More on the topic in django documentation

    【讨论】:

    • 好的告诉我一件事我可以使用 url 重定向而不是显示 msg inb forms.py
    【解决方案2】:

    (代表 OP)

    我用了这个,问题解决了

    u = User.objects.get(username__exact='john')
    u.set_password('new password')
    u.save()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 2016-01-09
      • 2016-07-22
      • 2018-03-25
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      相关资源
      最近更新 更多