AdminPasswordChangeForm
を使用してパスワードを変更することはあまりありません。私は、チュートリアルを持って、このスニペットを見つけました:DjangoのAdminPasswordChangeFormでパスワードを変更中にエラーが発生する
def user_change_password(request, id):
form = AdminPasswordChangeForm(User, request.POST)
if form.is_valid():
new_user = form.save()
msg = _('Password changed successfully.')
request.user.message_set.create(message=msg)
return HttpResponseRedirect('..')
else:
form = AdminPasswordChangeForm(User)
extra_context = {
'form': form,
'change': True
}
return direct_to_template(request,"users/user_password_change.html",
extra_context = extra_context)
すべてがurl.py
とテンプレートuser_password_chage.html
で結構です。テンプレートレベルでは、2つのパスワードフィールドを持つフォームが表示されています.1つはパスワードで、もう1つはパスワード(もう一度)です。私はそれが次のエラーを示してパスワードを変更するには、送信ボタンをクリックすると、しかし:
unbound method set_password() must be called with User instance as first argument (got unicode instance instead)
を私はジャンゴの初心者ですし、公式ドキュメントでは、このフォームについては何も見つかりませんでした。
という返信をいただきありがとうございます。 IDを渡してパスワードを変更しています。だからそれによると私は最初にIDとのユーザー名の関連付けを見つける必要がありますし、そのユーザー名を関数に渡しますか? is_staffオプションを同じidに変更しなければならない場合はどうすればいいですか? –
いいえ、ユーザー名ではなく、ユーザーインスタンスです。 User.objects.get(pk = my_id)はそれを行います。 –
正常に実行され、is_staffオプションの変更について –