使用 FastApi 读取动态 FormData

Umb*_*ers 3 python forms dynamic fastapi

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

\n
<form>\n <input type ="number" name="test1">\n</form>\n
Run Code Online (Sandbox Code Playgroud)\n

Python 快速 API:

\n
@app.post("/zip")\nasync def buildScaffolding( test1: int=Form(...)):\n    print(test1)\n    return ""\n
Run Code Online (Sandbox Code Playgroud)\n

但现在我想动态更改 HTML 表单。就像您在商店购买商品时一样:

\n
<form>\n <input type ="number" name="numberItems">\n <!-- item 1-->\n <input type ="text" name="item_1">\n <!-- item 2-->\n <input type ="text" name="item_2">\n ...\n <!-- item n-->\n <input type ="text" name="item_n">\n</form>\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

小智 5

在当前情况下,我们不知道有多少输入,为了简单起见,在动态创建输入的情况下,最好接受请求,因为请求包含一旦我们按提交或输入就会添加的表单。这意味着,在提交任何输入后,请求都会将其作为表单携带到 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
Run Code Online (Sandbox Code Playgroud)

我们可以使用 jsonable_encoder 将表单输入转换为 json 格式。卷曲它以检查它是如何工作的。例如,

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