【问题标题】:Displaying error msg that the user entered the wrong password显示用户输入错误密码的错误消息
【发布时间】:2011-04-07 03:22:48
【问题描述】:

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

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

这是我的 from 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.')

【问题讨论】:

  • 你的 html 表单中有 Method="POST" 吗?

标签: django authentication httprequest validationerror


【解决方案1】:

问题出在您的clean_oldPassword 方法中。您在 string 'oldPassword' 上调用 check_password 而不是变量,所以它自然会失败。

您还应该确保您的模板显示form.errors,这样您就可以看到它为什么不验证。

【讨论】:

  • 我将其更改为您建议的内容,但它仍然什么也没做,只是将我带回编辑用户信息页面。我输入了一些打印语句,但它没有通过 form.isValid() if 语句。此外,如果密码不匹配,它曾经告诉你出了什么问题,但现在它什么也不做。我的模板中也有 from.erros。
猜你喜欢
  • 2013-03-13
  • 2014-09-24
  • 2022-01-15
  • 2013-02-02
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多