Python WTForms自定义验证程序崩溃,而不是返回错误消息
我正在尝试使用WTForms创建一个真正简单的验证器,确保输入是a)存在的,b)一些类型(float或int都可以)。我编写了以下类,并将其添加到WTForms中的validators.py库中: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
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):