【问题标题】:Django form is valid if one validator is valid如果一个验证器有效,则 Django 表单有效
【发布时间】:2017-03-01 00:02:50
【问题描述】:

我正在 django 中处理这个表单

class EmailOrPhoneForm(forms.Form):
      phone_or_email =  forms.CharField(
         validators=[validate_phonenumber, validate_email],
     ) 

它有两个验证器,但如果其中一个是有效的、电话号码或电子邮件,我希望表单返回 true。

如果不编写一个可以完成所有工作的验证器,我怎么能做到这一点?

【问题讨论】:

    标签: django validation


    【解决方案1】:

    查看 django 的源代码后,我发现他们是如何做到的 在django.core.validatorsvalidate_ipv46_address 函数中。它应用了两个验证器: validate_ipv4_addressvalidate_ipv6_address

    对我的情况同样适用。

    def validate_email_or_phone(value):
         try:
             validate_email(value)
         except ValidationError:
             try:
                 validate_phone_number(value)
             except ValidationError:
                 raise ValidationError(_('Enter a valid Email address or Phone number'), code='invalid')
    

    这将是该字段的新验证器

    class EmailOrPhoneForm(forms.Form):
          phone_or_email =  forms.CharField(
             validators=[validate_email_or_phone],
         ) 
    

    希望有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多