Python 使用FastApi读取动态FormData
我可以使用Python FastAPI从HTML代码中读取JS 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">
<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