pydantic
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesepydantic
Pydantic
Type-driven validation and serialization using Pydantic models.
基于Pydantic模型的类型驱动验证与序列化。
Overview
概述
Pydantic validates data using Python type hints and provides rich serialization via and JSON schema output.
model_dump()Pydantic 利用Python类型提示验证数据,并通过方法和JSON Schema输出提供丰富的序列化功能。
model_dump()When to Use
适用场景
- Validating request/response payloads
- Normalizing untrusted input
- Generating JSON schema for docs
- 验证请求/响应负载
- 规范化不可信输入数据
- 为文档生成JSON Schema
Quick Start
快速开始
bash
uv pip install pydanticpython
from pydantic import BaseModel
class User(BaseModel):
id: int
email: str
user = User(id=1, email="a@example.com")bash
uv pip install pydanticpython
from pydantic import BaseModel
class User(BaseModel):
id: int
email: str
user = User(id=1, email="a@example.com")Core Patterns
核心模式
- Typed fields: strict schema definitions.
- Field validators: custom validation logic.
- Model validators: cross-field checks.
- Serialization: and
model_dump().model_dump_json() - Settings: environment-driven config via .
BaseSettings
- 类型化字段:严格的数据模式定义。
- 字段验证器:自定义验证逻辑。
- 模型验证器:跨字段检查。
- 序列化:和
model_dump()方法。model_dump_json() - 配置管理:通过实现基于环境的配置。
BaseSettings
Example: field_validator
示例:field_validator
python
from pydantic import BaseModel, field_validator
class Model(BaseModel):
name: str
@field_validator("name")
@classmethod
def ensure_not_empty(cls, v: str):
if not v:
raise ValueError("name required")
return vpython
from pydantic import BaseModel, field_validator
class Model(BaseModel):
name: str
@field_validator("name")
@classmethod
def ensure_not_empty(cls, v: str):
if not v:
raise ValueError("name required")
return vExample: model_validate + model_dump
示例:model_validate + model_dump
python
from pydantic import BaseModel
class Model(BaseModel):
foo: int
model = Model.model_validate({"foo": 1})
print(model.model_dump())python
from pydantic import BaseModel
class Model(BaseModel):
foo: int
model = Model.model_validate({"foo": 1})
print(model.model_dump())Troubleshooting
问题排查
- Coercion surprises: use strict types if needed
- Slow validators: keep them minimal
- Mutable defaults: use
default_factory
- 类型转换异常:必要时使用严格类型
- 验证器性能低下:尽量简化验证逻辑
- 可变默认值问题:使用
default_factory