python - 如何更改 IPAddressField 错误消息
问题描述
我在用着:
djangorestframework==3.11.0
django==3.0.3
我已经CharField
Error_message
轻松更改了,但是当我尝试更改以下错误消息时IPAddressField
:
class InterfaceSerializer(serializers.Serializer):
ip_address = serializers.IPAddressField(protocol="IPv4",
required=False,
allow_blank=True,
error_messages={'invalid': 'test fail'},
)
结果总是:
{"error_message": {
"ip_address": [
"Enter a valid IPv4 address."
]}}
回应是:
2020-03-18 13:13:12,878:错误:响应:{'error_message': {'ip_address': [ErrorDetail(string='Enter a valid IPv4 address.', code='invalid')]}}
解决方案
如您所见,错误消息非常具体:
'Enter a valid IPv4 address.'
在查看代码时,我在 DRF 中找不到这样的错误消息。这意味着该消息来自 django 验证器,尤其是validate_ipv4_address
.
正如您提到的,您正在使用"string"
它作为输入来测试它。如果您查看to_internal_value
的IPAddressField
,您会注意到该值"string"
不会在那里引发任何错误。从那里,它进入验证器并生成您看到的消息。
因为,validator
是直接提升ValidationError
, 没有经过fail
序列化器的方法。并且,因此它无法invalid
在字段中提供的错误消息中查找键。
推荐阅读
- c++ - 选择排序有什么问题?
- anaconda - Pycharm 终端中没有名为“conda”的模块
- spring-integration - 如何使用spring集成将邮件存储到数组列表对象或数据库中
- python - Python Kivy 2 Buttons 2 不同的动作在相同的布局
- python - 使用谷歌翻译使用 selenium 进行网页抓取
- asp.net-mvc - 在 Entity Framework Core 中使用 FromSqlRaw 时如何编写连接语句?
- amazon-web-services - 将 ETL 作业用于 aws 胶水时,如何控制 RDS 的摄取率?
- google-apps-script - 实施附加组件 doPost 和 doGet 触发器
- python - 你如何使用 Python xpath 从网页获取信息?
- google-bigquery - 主键同时具有整数和字符串的左连接