经过长时间的搜索,没有答案,我不得不向您寻求帮助。
我使用WTForms在Flask开发应用程序。
我试图验证表单,但我没有验证特定的字段。在每一个教程或文档中,我都发现了如何在Jinja 中捕捉验证错误
{%if form.field.errors%}等等…
如果我没有特定的字段,如何捕捉验证错误?如何捕捉Jinja中的一般错误?
这是我的表格和模板:
forms.py
class VacationForm(FlaskForm):
vac_start = DateField('Start Vacation', validators=[DataRequired()])
vac_end = DateField('End Vacation', validators=[DataRequired()])
half_day = BooleanField('Half Day')
submit = SubmitField('Submit')
def validate(self):
start = self.vac_start.data
end = self.vac_end.data
if start > end:
raise ValidationError('error')
template.html
<form method="POST" action="">
{{ form.hidden_tag() }}
{{ form.vac_start(class='form-control col-6',type='date') }}
{{ form.vac_end(class='form-control col-6',type='date') }}
{{ form.half_day }}
{{ form.submit }}
</form>
我总是看到错误页面,但我想在提交按钮或日期字段下的某个地方输出错误。我相信我在做一些简单的事情,但我就是想不通。
提前谢谢。
只需将错误附加到字段:
self.submit.errors.append("My message")
return False
不要引发ValidationError-在验证错误的情况下简单地返回False(否则返回True(。
所以我有了一个想法,验证vac_end字段,它以某种方式工作:D
这是代码。
vac_start = DateField('Start Vacation', validators=[DataRequired()])
vac_end = DateField('End Vacation', validators=[DataRequired()])
half_day = BooleanField('Half Day')
submit = SubmitField('Submit')
def validate_vac_end(self, vac_end):
if self.vac_start.data > vac_end.data:
raise ValidationError('Wrong dates')
{% if form.vac_end.errors %}
{% for error in form.vac_end.errors %}
{{ error }}
{% endfor %}
{% endif %}