Python Flask DateField禁用周末

时间:2019-03-21 14:07:54

标签: python validation flask wtforms datefield

我想知道是否可以添加任何验证以确保所选日期不是周末?目前,我的代码如下:

appointment_date = DateField('Appointment Date', format='%Y-%m-%d', default=date.today(), validators=[DateRange(min=date.today()), DataRequired()])

最简单的方法是什么?谢谢

2 个答案:

答案 0 :(得分:0)

为了检查星期几,请查看Python3的文档,其中显示如下内容:

>>> my_date = date(2002, 12, 4)
>>> my_date.isoweekday()
3

星期一是第1天,星期日是第7天。

来源: date.isoweekday()

答案 1 :(得分:0)

通过定义自定义验证器https://wtforms.readthedocs.io/en/stable/validators.html#custom-validators,可以轻松实现WTForms中的自定义数据验证。这是任何可调用的,接受2个位置参数,形式和字段并在验证失败时引发wtforms.ValidationError的对象。

class WeekdayValidator(object):
    def __call__(self, form, field):
        if field.data and field.data.isoweekday() > 5:
            raise ValidationError("Date selected cannot be a weekend.")

然后可以将其与字段定义中的其他验证器一起使用。

appointment_date = DateField('Appointment Date', 
                             format='%Y-%m-%d',
                             default=date.today(), 
                             validators=[WeekdayValidator(), 
                                         DateRange(min=date.today()),
                                         DataRequired()])