在我的用户表单中,我希望保留'电子邮件'字段可选,但如果提到电子邮件,那么我的自定义验证器应该可以工作。我希望以下代码能够正常工作。但不幸的是,它无法正常工作:
class AddUserForm(Form):
email = TextField('Email ID', [validators.Optional(strip_whitespace=True)])
@staticmethod
validate_email(form, field):
if field.data is not None:
if not is_valid_email_id_custom_function(field.data):
raise ValidationError('please enter a valid email id')
我想要以下效果:
如果我声明电子邮件字段是可选的,则完全跳过验证。我有解决方法,但有没有任何惯用和直接的方法来解决这个问题?
答案 0 :(得分:0)
问题在于您将validate_email
定义为@staticmethod
。内联验证器不是设计为静态方法,而是实例方法。只需删除该装饰器,只要提供电子邮件,您的验证器就可以正常工作。