【问题标题】:Django: Change the error message for validate_ipv46_addressDjango:更改 validate_ipv46_address 的错误消息
【发布时间】:2017-02-21 12:55:46
【问题描述】:

我想更改验证器validate_ipv46_address的错误信息。

这是我在forms.py 中的代码:

class IPAddressForm(forms.ModelForm):
    ip_address = forms.CharField(validators=[validate_ipv46_address])

    class Meta:
        # ...

    def __init__(self, *args, **kwargs):
         super(IPAddressForm, self).__init__(*args, **kwargs)


    def clean_ip_address(self):
         # i check other stuff

我想更改validate_ipv46_address 的消息,但它没有像validate_ipv46_address(message='') 这样的消息参数。

还是我必须编写自己的验证器?但这也行不通。

class my_validate_ipv4_address(validate_ipv46_address):
    message = 'test'

【问题讨论】:

  • 子类化不起作用 - validate_ipv46_address 是一个函数,而不是类。

标签: python django django-forms django-validation


【解决方案1】:

快速签入源代码表明您需要像这样包装它:

def my_validate_ipv46_address(value):
    try:
        validate_ipv46_address(value)
    except ValidationError:
        raise ValidationError(_('your message here'), code='invalid')

它的作用是捕获 Django 的验证器引发的验证错误,并为它提供您自己的异常消息。请注意,您将忽略从验证器返回的原始消息 - 最好仍然使用它来提供有关验证失败原因的正确信息。

【讨论】:

    猜你喜欢
    • 2018-06-26
    • 2019-05-27
    • 1970-01-01
    • 2021-09-15
    • 2012-01-24
    • 2012-05-12
    • 1970-01-01
    • 2019-11-21
    • 2020-07-10
    相关资源
    最近更新 更多