Python WTForms自定义验证程序崩溃,而不是返回错误消息

Python WTForms自定义验证程序崩溃,而不是返回错误消息,python,flask,wtforms,flask-wtforms,Python,Flask,Wtforms,Flask Wtforms,我正在尝试使用WTForms创建一个真正简单的验证器,确保输入是a)存在的,b)一些类型(float或int都可以)。我编写了以下类,并将其添加到WTForms中的validators.py库中: class MyValidator(object): def __init__(self, message=None): self.message = message def __call__(self, form, field): if not fi

我正在尝试使用WTForms创建一个真正简单的验证器,确保输入是a)存在的,b)一些类型(float或int都可以)。我编写了以下类,并将其添加到WTForms中的validators.py库中:

class MyValidator(object):
    def __init__(self, message=None):
        self.message = message

    def __call__(self, form, field):
        if not field.data:
            if self.message is None:
                message = field.gettext('This field is required.')
                return ValidationError(self.message)

        try:
            val = float(field.data)
        except NameError:
            self.message = ('Input must be a number')
            raise ValidationError(self.message)
        return field.data
并将其添加到我的表格中:

class foo(Form):
    bar = IntegerField('foo',[validators.MyValidator()])
这会导致我的Flask应用程序在进入验证阶段时崩溃(如果不是foo.validate,则为foo.validate,其中foo是foo类的实例),回溯如下:

  File "C:\Users\~~\AppData\Local\Programs\Python\Python35\lib\site-packages\wtforms\validators.py", line 158, in __call__
    val = float(field.data)
TypeError: float() argument must be a string or a number, not 'NoneType'

这很烦人。我怎么才能返回False呢?我遗漏了什么明显的东西吗?

好的,我发现了我的错误。这是令人尴尬的简单,我的本能是删除这个问题,但也许代码将有助于其他人在未来

例外情况行当然应为:

except (TypeError, NameError):