0
WTFormsを使って本当に単純なバリデーターを作成しようとしています - 入力がa)presentとb)いくつかの型(floatまたはintが両方ともOKです。 )。私は、次のクラスを書き、WTFormsでvalidators.pyライブラリにこれを追加しました:WTFormsカスタムバリデーターがエラーメッセージを返す代わりにクラッシュする
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()])
私が検証されたらこれは私のフラスコアプリがクラッシュしますこのトレースバックで、(fooはfooのクラスのインスタンスをあるif not foo.validate
、)舞台:
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を返しますか?私は明白な何かを欠いていますか