Django:更改 validate_ipv46_address 的错误消息
Django: Change the error message for validate_ipv46_address
我想更改验证器的错误信息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'
快速查看源代码表明您需要像这样包装它:
def my_validate_ipv46_address(value):
try:
validate_ipv46_address(value)
except ValidationError:
raise ValidationError(_('your message here'), code='invalid')
它的作用是捕获 Django 验证程序引发的验证错误,然后您向它提供您自己的异常消息。请注意,您会忽略从验证器返回的原始消息 - 最好仍然使用它来提供有关验证失败原因的正确信息。
我想更改验证器的错误信息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'
快速查看源代码表明您需要像这样包装它:
def my_validate_ipv46_address(value):
try:
validate_ipv46_address(value)
except ValidationError:
raise ValidationError(_('your message here'), code='invalid')
它的作用是捕获 Django 验证程序引发的验证错误,然后您向它提供您自己的异常消息。请注意,您会忽略从验证器返回的原始消息 - 最好仍然使用它来提供有关验证失败原因的正确信息。