【问题标题】:Validating Optional Field in WTForms验证 WTForms 中的可选字段
【发布时间】:2015-01-20 21:02:18
【问题描述】:

在我的用户表单中,我想保留“电子邮件”字段可选,但如果提到电子邮件,在这种情况下,我的自定义验证器应该可以工作。我希望下面的代码能够工作。但不幸的是它不起作用:

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')

我想要如下效果:

  • 如果电子邮件字段为空,则不执行任何操作,可以将其留空。
  • 但是如果电子邮件字段有一些数据,那么验证它是否可以接受。

如果我将电子邮件字段声明为可选,则完全跳过验证。我有解决这个问题的方法,但是有什么惯用且直接的方法来解决这个问题吗?

【问题讨论】:

    标签: wtforms flask-wtforms


    【解决方案1】:

    问题在于您将validate_email 定义为@staticmethod。内联验证器并非设计为作为静态方法完成,而是作为实例方法完成。只需删除该装饰器,您的验证器就应该在提供电子邮件时工作。

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 2023-03-16
      • 2018-02-24
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      相关资源
      最近更新 更多