[英]Read dynamic FormData with FastApi
我可以从我的 HTML 代码中使用 Python FastAPI 读取 JS FormData,如下所示:
<form>
<input type ="number" name="test1">
</form>
Python FastAPI:
@app.post("/zip")
async def buildScaffolding( test1: int=Form(...)):
print(test1)
return ""
但现在我想动态更改 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 处理输入?
下面的代码将帮助您获取动态表单数据。
@app.post("/zip")
async def buildScaffolding(request: Request):
form_data = await request.form()
print(form_data)
return ""
您可以动态创建 Enum,这将让您动态创建查询参数。
from fastapi import FastAPI, Form
from enum import Enum
app = FastAPI()
DynamicEnum = Enum("DynamicEnum", names={"item1":"items", "item2": "comes", "item3": "from", "item4": "database"})
@app.post("/select")
async def select_item(item: DynamicEnum = Form(...)):
return item
让我们检查 /docs 并确保 FastAPI 正确呈现。
在当前情况下,我们不知道有多少输入,为了简单起见,在动态创建的输入的情况下,最好采用请求,因为请求包含我们按下提交或输入后添加的表单。 这意味着,无论输入是什么,在提交之后,请求都会将其作为表单传送到 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
我们可以使用 jsonable_encoder 将表单输入转换为 json 格式。 卷曲它以检查它是如何工作的。 例如,
curl -i -d "param1=value1¶m2=value2" http://localhost:8000/check
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.