1、問題
當(dāng)使用Flask web框架開發(fā)的web網(wǎng)站時,這個輕型框架有很多拓展來供我們使用,對于后臺管理,F(xiàn)lask-Admin能幫助我們減輕很多工作,讓我們更專注于業(yè)務(wù)代碼的編寫,但是使用別人已經(jīng)造好的輪子有時候會出現(xiàn)需要自定義的地方,比如我們想在Flask-Admin新建記錄時使用我們自定義的校驗(yàn)器,我們該怎么做!
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()換成自己定義的校驗(yàn)方法呢,肯定可以。
class MyView(ModelView):
...
# 自定義校驗(yàn)器,用來判斷用戶輸入的日期是否小于當(dāng)前日期
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'所選日期不能小于當(dāng)前日期!')
form_args = dict(
life_time=dict(validators=[date_validator])
)
...
我們在自定義的Views中定義了一個校驗(yàn)器,用來檢驗(yàn)用戶選擇的日期是否合法。
試試我們的校驗(yàn)器是否起作用:
validator