长时间搜索后没有答案,我不得不向您寻求帮助。
我正在使用WTForms在Flask中开发应用程序。
我正在尝试验证表单,但没有验证特定字段。在每个教程或文档中,我都找到了如何在Jinja中捕获验证错误
{%,如果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>
我总是进入错误页面,但是我想在“提交”按钮或日期字段下的某个地方输出错误。 我相信我在做些简单的事,但我只是想不通。
谢谢。
答案 0 :(得分:0)
只需将错误附加到字段:
self.submit.errors.append("My message")
return False
不要引发ValidationError-如果发生验证错误,则简单地返回False(否则返回True)。
答案 1 :(得分:0)
所以我有了主意,可以验证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 %}