在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中定义的标准,以确保最佳的兼容性和易读性。