涉及BaseModel的源代码
from pydantic import BaseModel
class User(BaseModel):
username: str
email: Union[str, None] = None
full_name: Union[str, None] = None
disabled: Union[bool, None] = None
Pydantic 提供了数据校验和设定数据类型的功能,使得处理数据更加安全和方便。
详细解释
class User(BaseModel):
:
- 定义了一个名为
User
的类,并继承自BaseModel
。这意味着User
类将拥有 Pydantic 的所有功能。
字段定义:
-
username: str
:username
是一个字符串类型的字段。这是一个强制性的字段(因为没有提供默认值),因此每次实例化这个类时都必须提供这个字段。
-
email: Union[str, None] = None
:email
是一个字符串类型或None
的字段,也就是可选字段。它的默认值是None
,可以不提供。如果提供的话,必须是字符串类型。Union[str, None]
表示这个字段可以是str
类型或None
。
-
full_name: Union[str, None] = None
:full_name
是一个可选的字符串字段,默认值为None
。用法与email
字段类似。
-
disabled: Union[bool, None] = None
:disabled
是一个布尔类型或None
的可选字段,默认值为None
。它用来表示用户是否被禁用。
总得来说,这个 User
类使用了 Pydantic 提供的类型提示和默认值设置,以确保在创建实例时,字段的数据类型是正确的,同时也可以方便地设定默认值和处理可选字段。通过这种方式,数据校验变得更简单,并减少了运行时错误的发生。
典型应用
字典转模型和模型转字典
# 字典转模型
user_dict = {"username": "john", "email": "[email protected]"}
user = User(**user_dict)
# 模型转字典
user_dict = user.dict()