Python 使用FastApi读取动态FormData

Python 使用FastApi读取动态FormData,python,forms,dynamic,fastapi,Python,Forms,Dynamic,Fastapi,我可以使用Python FastAPI从HTML代码中读取JS FormData,如下所示: <form> <input type ="number" name="test1"> </form> 但现在我想动态更改HTML表单。例如,当您在商店购买商品时: <form> <input type ="number" name="numberItems">

我可以使用Python FastAPI从HTML代码中读取JS FormData,如下所示:

<form>
 <input type ="number" name="test1">
</form>
但现在我想动态更改HTML表单。例如,当您在商店购买商品时:

<form>
 <input type ="number" name="numberItems">
 <!-- item 1-->
 <input type ="text" name="item_1">
 <!-- item 2-->
 <input type ="text" name="item_2">
 ...
 <!-- item n-->
 <input type ="text" name="item_n">
</form>

...

问题:如果我不知道将发送多少项,如何使用Python FastAPI处理输入?

您可以动态创建枚举,这将允许您动态创建查询参数

从fastapi导入fastapi,表单
从枚举导入枚举
app=FastAPI()
DynamicEnum=Enum(“DynamicEnum”,name={“item1”:“items”,“item2”:“comes”,“item3”:“from”,“item4”:“database”})
@app.post(“/select”)
异步定义选择项(项:DynamicEnum=Form(…):
退货项目
让我们检查/docs并确保FastAPI正确地呈现了它


下面的代码将帮助您获取动态表单数据


@app.post("/zip")
async def buildScaffolding(request: Request):
    form_data = await request.form()
    print(form_data)
    return ""

在本案中, 我们不知道有多少输入,为了简单起见,在动态创建输入的情况下, 它更倾向于接受请求,因为请求包含表单,一旦我们按下submit或enter,表单就会被添加。这意味着,在提交任何输入后,请求都将以表单的形式传递给api

from fastapi.encoders import jsonable_encoder
@app.post('/check')
async def check(request: Request):
    da = await request.form()
    da = jsonable_encoder(da)
    print(da)
    return da
我们可以使用JSU编码器将表单输入转换为json格式。 卷曲它来检查它是如何工作的。比如说,

curl-i-d“param1=value1¶m2=value2”http://localhost:8000/check


但动态部分发生在前端。这不是“选择了n个带参数的项”问题的解决方案,但可能对其他问题有帮助。请添加一点解释,说明为什么此代码可以工作。
from fastapi.encoders import jsonable_encoder
@app.post('/check')
async def check(request: Request):
    da = await request.form()
    da = jsonable_encoder(da)
    print(da)
    return da