我试图使用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()])
当我进入验证阶段(if not foo.validate
,其中foo是foo类的一个实例)时,这会导致我的Flask应用程序崩溃,并带有此回溯:
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?我错过了一些明显的东西吗?
答案 0 :(得分:0)
例外行当然应该是:
except (TypeError, NameError):