Flask-WTF的DateField提交正确格式日期仍提示无效如何解决?
问题根源
DateField和TimeField的format参数值额外包裹了一层单引号,WTForms会将单引号作为格式的一部分执行校验,导致正常格式的日期、时间无法匹配规则,触发校验失败提示。
修复方案
修改forms.py内的字段定义,移除format参数值中的单引号:
class DateForm(FlaskForm): date = DateField("Date", format="%Y-%m-%d", validators=[Optional()]) hour = TimeField("Hour", format="%H:%M", validators=[Optional()]) submit = SubmitField("Submit")
可选排查项
如果修改后仍存在校验问题,可逐一确认以下配置:
- 若需要支持多种输入格式,可将
format参数改为列表类型,例如format=["%Y-%m-%d", "%Y/%m/%d"]即可同时匹配横杠、斜杠分隔的日期格式 - 确认
Flask-WTF版本不低于1.0.0,旧版本WTForms存在日期时间校验规则兼容问题 - 若使用前端日期/时间选择组件,确认组件输出的value格式与后端定义的格式完全匹配,部分组件默认输出带时区的时间格式,需手动调整输出规则
内容的提问来源于stack exchange,提问作者PabloM
相关产品推荐
相关产品推荐

