11.FastAPI模型与字典

11.FastAPI模型与字典

11.1Pydantic 的 .dict()

Pydantic 模型的 .dict()方法返回一个拥有模型数据的 dict。 代码如下:

from fastapi import FastAPI
from pydantic import BaseModel
​
app = FastAPI()
​
class Language(BaseModel):
    id: str
    name: str
    year: int
    rank: int
​
@app.get(path='/test')
async def test():
    python = Language(id='L1', name='python', year=2021, rank=1)
​
    print(type(python))
    print(type(python.dict()))
    print(python.dict())
​
    return python

执行请求:

curl http://127.0.0.1:8000/test
{"id":"L1","name":"python","year":2021,"rank":1}

print语句的输出:

<class 'main.Language'>
<class 'dict'>
{'id': 'L1', 'name': 'python', 'year': 2021, 'rank': 1}

11.2dict解包

反过来,我们将类似与Pydantic 模型的字典数据以 **字典变量 的形式传递给一个函数或者类,python会对其解包,会将字典的键和值作为关键字参数直接传递。代码如下:

from fastapi import FastAPI
from pydantic import BaseModel
​
app = FastAPI()
​
class Language(BaseModel):
    id: str
    name: str
    year: int
    rank: int
​
@app.get(path='/test')
async def test():
    python = {
        'id': 'L1',
        'name': 'python',
        'year': 2021,
        'rank': 1
    }
​
    print(type(python))
    print(type(Language(**python)))
    print(Language(**python))
​
    return python

执行请求:

curl http://127.0.0.1:8000/test
{"id":"L1","name":"python","year":2021,"rank":1}

print输出:

<class 'dict'>
<class 'main2.Language'>
id='L1' name='python' year=2021 rank=1

在实际应用开发过程中,Pydantic 模型与字典之间的相互转换是非常有价值和意义的,如:将请求体转为字典,然后将字典写入数据表等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janeb1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值