ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

11.FastAPI模型与字典

2022-01-14 17:02:24  阅读:160  来源: 互联网

标签:11 name python FastAPI rank year print id 字典


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 模型与字典之间的相互转换是非常有价值和意义的,如:将请求体转为字典,然后将字典写入数据表等。

标签:11,name,python,FastAPI,rank,year,print,id,字典
来源: https://blog.csdn.net/chenhaiy/article/details/122497938

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有