如何在WTForms中验证DateField [英] How to validate a DateField in WTForms

查看:63
本文介绍了如何在WTForms中验证DateField的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In my flask app I have a WTForm with two date pickers for a 'start date' and an 'end date'. What is the best way to validate that the 'end date' is not earlier than the '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')

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

The only thing I found on this topic was this validator:

 wtforms_html5.DateRange

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

Found here: https://pypi.org/project/wtforms-html5/0.1.3/ but it seems to be an old version of wtforms-html5.

推荐答案

我知道了.在表单类中,可以定义用于验证相应字段的方法 validate_ {fieldname} .此方法将 field form 作为参数,因此我可以将startdate字段称为 form.startdate_field .这是代码:

I figured it out. In the form class one can define a method validate_{fieldname} that validates the corresponding field. This method takes as arguments field and form so I can refer to the startdate field as form.startdate_field. Here is the code:

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.")

这篇关于如何在WTForms中验证DateField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆