繁体   English   中英

如何在WTForms中验证DateField

[英]How to validate a DateField in WTForms

在我的烧瓶应用程序中,我有一个带有两个日期选择器的WTForm,分别用于“开始日期”和“结束日期”。 验证“结束日期”不早于“开始日期”的最佳方法是什么?

from flask_wtf import FlaskForm
from wtforms.fields.html5 import DateField
from wtforms import SubmitField 

class Form(FlaskForm):
    startdate_field = DateField('Start Date', format='%Y-%m-%d')
    enddate_field = DateField('End Date', format='%Y-%m-%d')
    submit_field = SubmitField('Simulate')

我在此主题上发现的唯一东西是验证器:

 wtforms_html5.DateRange

在此处找到: https ://pypi.org/project/wtforms-html5/0.1.3/,但这似乎是wtforms-html5的旧版本。

我想到了。 在表单类中,可以定义一种方法validate_{fieldname} ,以验证相应的字段。 此方法将参数fieldform作为参数,因此我可以将startdate字段称为form.startdate_field 这是代码:

from flask_wtf import FlaskForm
from wtforms import SubmitField
from wtforms.validators import ValidationError
from wtforms.fields.html5 import DateField

class Form(FlaskForm):
    startdate_field = DateField('Start Date', format='%Y-%m-%d')
    enddate_field = DateField('End Date', format='%Y-%m-%d')
    submit_field = SubmitField('Next')

    def validate_enddate_field(form, field):
        if field.data < form.startdate_field.data:
            raise ValidationError("End date must not be earlier than start date.")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM