fastapi - 如何覆盖 pydantic 模型的验证消息
问题描述
我想从 pydantic 模型类更改验证消息,模型类的代码如下:
class Input(BaseModel):
ip: IPvAnyAddress
@validator("ip", always=True)
def not_valid_ip(cls, v):
"""To validate ip-address."""
if str(v) == "":
raise ValueError(f'Invalid IP-Address:: {v}')
if not isinstance(v, IPvAnyAddress):
raise ValueError(f'Invalid IP format:: {v}')
return v
目前,它不会更新上面写的消息。我正在使用 fastAPI 进行 API 开发。
{
"detail": [
{
"loc": [
"body",
"input",
"ip"
],
"msg": "value is not a valid IPv4 or IPv6 address",
"type": "value_error.ipvanyaddress"
}
]
}
解决方案
那是因为在调用验证器之前标准验证失败。
您需要做的就是添加pre=True
到您的验证器装饰器中,例如
@validator("ip", always=True, pre=True)
推荐阅读
- linux - linux find 命令:在多个目录中多次搜索
- javascript - 如何防范 Angular 9 AOT
- python - 您如何搜索列表,如果找到该值,则遵循 if 语句一次,而不是针对找到的每个值
- elasticsearch - Elasticsearch 显示不应该显示的结果
- scala - java.util.UUID.randomUUID 是可复制的吗?
- javascript - 如何访问 JSON 有效负载数据的内部?
- javascript - 如何检查对象数组是否包含特定键的相同值
- java - 为什么它总是显示错误数量的镍币?
- vim - 使vim正确缩进管道while循环
- python - Python:在单个列中搜索 CSV 文件中的特定值并返回整行