在Pydantic的BaseModel
中,可以使用Python的基本数据类型以及一些特殊的类型,包括但不限于以下几种:
1、基本数据类型:
-
int
: 整数 -
float
: 浮点数 -
str
: 字符串 -
bool
: 布尔值 (True
或False
) -
bytes
: 字节串 -
None
: 用于表示可选字段的缺失
2、容器类型:
List[<type>]
: 列表,其中<type>
是你想限制的元素类型,例如List[int]
表示整数列表Tuple[<type>, ...]
: 元组,同样可以指定元素类型Set[<type>]
: 集合Dict[str, <type>]
: 字典,键通常是字符串类型,值可以是任意类型Union[<type1>, <type2>, ...]
: 联合类型,表示字段可以是多种类型中的任意一种Optional[<type>]
: 表示该字段可以是某类型或None
,等价于Union[<type>, NoneType]
。
3、特殊类型:
-
EmailStr
: 验证电子邮件地址的字符串。 -
AnyUrl
: 验证任何类型的URL。 -
FilePath
: 文件路径。 -
DirectoryPath
: 目录路径。 -
StrictBool
: 更严格的布尔类型,不允许非布尔值的输入。 -
constr(min_length=..., max_length=...)
: 用于字符串,可以限制最小和最大长度。 -
SecretStr
: 用于敏感信息,如密码,会在日志和错误信息中隐藏具体内容。
4、自定义类型:
-
你可以定义自己的类型,只要它们实现了相应的逻辑以支持数据验证和序列化/反序列化。
5、额外的验证工具:
- 使用
Field
进行更细粒度的控制,比如设置默认值、描述、是否必填等。 - 使用
validator
装饰器定义自定义验证逻辑。
这些类型和工具共同构成了Pydantic强大而灵活的数据验证和建模能力。注意,类型注解应当遵循PEP 484和PEP 585中定义的标准,以确保最佳的兼容性和易读性。