0

django の auth_user テーブルのいくつかのフィールドを更新したいと考えています。実際には、あるWebサイトから別のWebサイトに一部のユーザーを移行しているため、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 には、パスワードのハッシュ化を処理するメソッドがあります。2番目のこと:

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

(OPに代わって)

私はこれを使用し、問題は解決しました

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