ユーザーが情報を更新してパスワードを変更するためのページを作成しようとしています。
私は今それを働いています。私が提供したコードは機能しますが、間違ったパスワードを入力したことをユーザーに伝える方法がわかりません。ユーザーがパスワードを入力した場合、フォームは有効ですが、間違ったパスワードを入力した場合、フォームは無効であると言いたいです。しかし、forms.ValidationError("some error msg") を else stmt に入れると、現在は forms.errors と表示されますが、テンプレートには戻りませんが、コンパイラのメッセージ ページにエラー メッセージが表示されます。
これは django.contrib.auth.models import User からの私のものです
def edit_page(request):
u = request.user
if request.method == 'POST':
form = EditUserForm(request.POST)
if form.is_valid():
if u.check_password(form.cleaned_data['oldPassword']):
u.set_password(form.cleaned_data['password1'])
u.save()
return HttpResponseRedirect('/')
else:
form.errors //Where I put forms.ValidationError()
else:
form = EditUserForm()
variables = RequestContext(request, {
'form': form, 'user': request.user
})
return render_to_response(
'registration/Edit_User.html',
variables
)
これは私のforms.pyclassにあります
EditUserForm(forms.Form):
oldPassword = forms.CharField(
label=u'Current Password',
widget = forms.PasswordInput()
)
password1 = forms.CharField(
label=u'New Password',
widget=forms.PasswordInput()
)
password2 = forms.CharField(
label=u'New Password (Again)',
widget=forms.PasswordInput()
)
def clean_password2(self):
if 'password1' in self.cleaned_data:
password1 = self.cleaned_data['password1']
password2 = self.cleaned_data['password2']
if password1 == password2:
return password2
raise forms.ValidationError('Passwords do not match.')