Pydantic 可以与任何基于 Python 的框架一起使用,它还支持原生 JSON 编码和解码 。在这里,了解采用 Pydantic 是多么简单 。
Pydantic 是一个用于数据建模/解析的Python库,具有高效的错误处理和自定义验证机制 。截至今天,Pydantic 主要用于FastAPI 框架中用于解析请求和响应,因为 Pydantic 具有对JSON编码和解码 的内置支持 。
本文涵盖以下主题:
- 理解BaseModel类
- Optional在 Pydantic
- Pydantic 中的验证
- 自定义验证
- 使用 Pydantic 可选email-validator模块 进行电子邮件验证
输入
data = https://www.baikexueshe.com/s/{"id":20, "name":"John", "age":42, "dept":"IT"}对于解析,首先,我们需要导入BaseModel并声明一个类User,该类继承自BaseModel.
Python
from pydantic import BaseModelfrom pprint import printdata = https://www.baikexueshe.com/s/{"id":20, "name":"John", "age":42, "dept":"IT"}class User(BaseModel):id: intname: strage: intdept: str【trapper wrappers】接下来,需要从User类中实例化一个对象:
Python
user = User(**data)pprint(user)输出
User(id=20, name=\'John\', age=42, dept=\'IT\') 在 Pydantic 中是可选的类中的属性User可以声明为 type Optional 。如果我们不确定是否存在任何 JSON 字段,我们可以将该特定类型声明为Optional,如果该字段缺失,则默认情况下,如果该属性未使用默认值初始化,则Optional返回 。None在示例中,让我们dept完全删除该字段:
Python
from pydantic import BaseModelfrom typing import Optionalfrom pprint import pprintdata = https://www.baikexueshe.com/s/{"id":20, "name":"John", "age":42}class User(BaseModel):id: intname: strage: intdept: Optional[str]user = User(**data) pprint(user)输出dept字段值为,None因为它在输入数据中缺失 。
User(id=20, name=\'John\', age=42, dept=None)Pydantic 中的验证在 Pydantic 中,为了获得更精细的错误细节,开发人员需要使用try/except块 。错误将是类型
pydantic.error_wrappers.ValidationError 。
在我们的 JSON 数据中,将id字段修改为字符串,然后导入ValidationError.
输入数据
data = https://www.baikexueshe.com/s/{"id":"default", "name":"John", "age":42}程序Python
from pydantic import BaseModel, ValidationErrorfrom typing import Optionalfrom pprint import pprintdata = https://www.baikexueshe.com/s/{"id":"default", "name":"John", "age":42}class User(BaseModel):id: intname: strage: intdept: Optional[str]try:user = User(**data)pprint(user)except ValidationError as error:pprint(error)错误
ValidationError(model=\'User\', errors=[{\'loc\': (\'id\',), \'msg\': \'value is not a valid integer\', \'type\': \'type_error.integer\'}])为了更好的可读性,可以将错误表示为 JSON:
Python
try:user = User(**data)pprint(user)except ValidationError as error:print(error.json())这将返回 JSON:
JSON
[{"loc": ["id"],"msg": "value is not a valid integer","type": "type_error.integer"}]自定义验证Pydantic 具有用于自定义属性验证的有用装饰器 。开发者需要导入 Pydanticvalidator装饰器,编写我们自定义的验证逻辑;例如,如果name字段的长度小于 3 个字符,则会引发错误 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
