簡體   English   中英

WTForms 自定義字段驗證不執行

[英]WTForms custom field validation doesn't execute

按照這個答案: How to validate a DateField in WTForms我試圖進行自定義驗證。 但它不會被調用。 我知道這一點是因為在測試期間不會發生ValidationError

import datetime as dt
from flask_wtf import FlaskForm
from wtforms import SubmitField, DateTimeField
from wtforms.validators import ValidationError

class NotificationMessage(FlaskForm):
    expire = DateTimeField(
        'Expire',
        default=dt.datetime.today() + dt.timedelta(days=31),
        validators=[],
        format='%Y-%m-%d %H:%M')
    submit = SubmitField('Send Notification')

    def validate_expire(form, field):
        # if field.data and field.data < dt.datetime.today():
        raise ValidationError('Expire datetime must be in the future.')

我必須在我的 flask 路由中明確調用validate_expire方法嗎?

我必須在我的 flask 路由中明確調用 validate_expire 方法嗎?

不,但是您必須在端點中調用form.validate()form.validate_on_submit() (括號很重要,否則您只是在檢查這些方法是否存在)。

這兩個函數都期待 ValidationErrors 並捕獲它們並簡單地返回一個布爾值。 應用程序代碼中沒有引發異常。

在調用其中一個驗證函數后,您還可以檢查form.errors以獲取每個字段的錯誤列表字典。

您的表單代碼按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM