-
响应模型示例
- 这个示例中需要安装几个插件:用 EmailStr 需要 pip install pydantic[email]
- pip install python-multipart
class UserIn(baseModel): username: str password: str email: EmailStr mobile: str = "10086" address: str = None full_name: Optional[str] = None class UserOut(baseModel): username: str email: EmailStr # 用 EmailStr 需要 pip install pydantic[email] mobile: str = "10086" address: str = None full_name: Optional[str] = None users = { "user01": {"username": "user01", "password": "123123", "email": "user01@example.com"}, "user02": {"username": "user02", "password": "123456", "email": "user02@example.com", "mobile": "110"} } @app02.post("/response_model/", response_model=UserOut, response_model_exclude_unset=True) async def response_model(user: UserIn): """response_model_exclude_unset=True表示返回值中默认值不包含在响应中,仅包含实际传入的值,如果实际给的值与默认值相同也会包含在响应中""" print(user.password) # password不会被返回 # return user return users["user01"] -
返回数据字段选择
@app02.post( "/response_model/attributes", #response_model=UserOut, # response_model=Union[UserIn, UserOut], # 取并集 response_model=List[UserOut], # 返回userout对象列表 #response_model_include=["username", "email", "mobile"], #返回包含字段 #response_model_exclude=["mobile"] # 排除字段 ) async def response_model_attributes(user: UserIn): """response_model_include列出需要在返回结果中包含的字段;response_model_exclude列出需要在返回结果中排除的字段""" # del user.password # Union[UserIn, UserOut]后,删除password属性也能返回成功 #return user return [users['user01'], users['user02']]



