显示用户输入错误密码的错误消息

时间:2011-04-07 03:22:49

标签: django authentication httprequest validationerror

我正在尝试为用户编写一个页面来更新他们的信息并更改他们的密码。

我现在正在工作。我提供的代码有效,但我不知道如何告诉用户他们输入了错误的密码。如果用户输入密码,表单有效,但如果输入错误的密码,我想说表单无效。但是如果我在现在说为forms.errors的else stmt中放置forms.ValidationError(“some some msg”),它不会返回到模板,而是在编译器的msg页面中显示错误msg。

这是我的     来自django.contrib.auth.models导入用户

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.')

1 个答案:

答案 0 :(得分:0)

问题出在您的clean_oldPassword方法中。您在字符串'oldPassword'上调用check_password而不是变量,因此自然会失败。

您还应确保模板显示form.errors,以便了解其未验证的原因。