在Flask-Admin中自定义校验器

1、问题

当使用Flask web框架开发的web网站时,这个轻型框架有很多拓展来供我们使用,对于后台管理,Flask-Admin能帮助我们减轻很多工作,让我们更专注于业务代码的编写,但是使用别人已经造好的轮子有时候会出现需要自定义的地方,比如我们想在Flask-Admin新建记录时使用我们自定义的校验器,我们该怎么做!

2、解决方案

Flask-Admin官方文档https://flask-admin.readthedocs.io/en/latest/introduction/ 中介绍有这么一段话

To specify WTForms field arguments:

form_args = {
    'name': {
        'label': 'First Name',
        'validators': [required()]
    }
}

我们能不能将required()换成自己定义的校验方法呢,肯定可以。

class MyView(ModelView):
    ...
    
    # 自定义校验器,用来判断用户输入的日期是否小于当前日期
    def date_validator(form, field):
        input_date = datetime.datetime.strptime(field.data.strftime('%Y-%m-%d'), '%Y-%m-%d').date()
        now_time = time.strftime("%Y-%m-%d", time.localtime())
        now_date = datetime.datetime.strptime(now_time, '%Y-%m-%d').date()

        if input_date < now_date:
            raise ValidationError(u'所选日期不能小于当前日期!')

    form_args = dict(
        life_time=dict(validators=[date_validator])
    )
    ...

我们在自定义的Views中定义了一个校验器,用来检验用户选择的日期是否合法。
试试我们的校验器是否起作用:

在Flask-Admin中自定义校验器_第1张图片
validator

你可能感兴趣的:(在Flask-Admin中自定义校验器)