如何在 WTForms 中验证 DateField
How to validate a DateField in WTForms
在我的 Flask 应用程序中,我有一个 WTForm,它带有两个日期选择器,用于 'start date' 和 'end date'。验证 'end date' 不早于 'start date' 的最佳方法是什么?
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。
我明白了。在 class 形式中,可以定义一个方法 validate_{fieldname}
来验证相应的字段。此方法将 field
和 form
作为参数,因此我可以将开始日期字段称为 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.")
在我的 Flask 应用程序中,我有一个 WTForm,它带有两个日期选择器,用于 'start date' 和 'end date'。验证 'end date' 不早于 'start date' 的最佳方法是什么?
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。
我明白了。在 class 形式中,可以定义一个方法 validate_{fieldname}
来验证相应的字段。此方法将 field
和 form
作为参数,因此我可以将开始日期字段称为 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.")