【发布时间】:2014-07-28 11:05:52
【问题描述】:
检查我的表单是否有效后,我会执行额外的验证:
def reset_passwd(req):
if req.method == 'POST':
form = ResetPasswdForm(req.POST)
if form.is_valid():
# extract data
passwd1 = form.cleaned_data['passwd1']
passwd2 = form.cleaned_data['passwd2']
# validate passwd
if passwd1 != passwd2:
raise forms.ValidationError('passwords are not the same', 'passwd_mismatch')
# do stuff...
return HttpResponseRedirect('/success')
else:
form = ResetPasswdForm(req.POST)
return render(req, 'reset_passwd_form.html', {'form': form})
问题是引发ValidationError 这是一个Exception 当然会中断视图函数的执行,因此不会返回任何响应!
如果form.is_valid() 未执行验证,如何返回绑定表单显示验证错误?
(令人困惑的是,如果表单无效,django 文档说form.is_valid() 会抛出ValidtionErrors,但是当is_valid() 为假时,它必须处理它们,因为调试它会继续执行。)
【问题讨论】:
-
您应该在
clean()表单的方法中检查这些内容。 -
@Rohan 谢谢,我现在明白了,你可以给它一个答案:)
标签: django python-2.7 django-forms