flask - 验证 WTForms 和 Jinja 中不存在的字段
问题描述
经过长时间的搜索,没有答案,我不得不向你寻求帮助。
我使用 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>
我总是进入错误页面,但我想在提交按钮或日期字段下的某处输出错误。我相信我在做一些简单的事情,但我就是想不通。
先感谢您。
解决方案
所以我有了想法,验证 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 %}
推荐阅读
- javascript - React-Native Firebase 推送通知 onClick 到我的应用程序中的特定页面
- python - python 的 input() 可以根据给定的参数返回一个布尔值吗?
- python-3.x - 绘制 Snort 警报数量与时间的连续图
- python - 为什么变量'x'没有正确定义路径
- python - 如何在for循环外访问局部变量?
- flutter - 如何在颤动的 Row 包裹的列中并排对齐按钮?
- floating-point - 具有小端和大端的数据存储 IEEE754
- go - 尝试使用 go 例程时无法抓取数据
- lua - 如何以有效的方式将相同类型的块组合在矩形棱镜中?
- javascript - 如何计算嵌套数组中的字符串?