[英]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.