python - FastAPI 等效于 Flask 的 request.form,用于不可知的表单

标签 python html forms flask fastapi

我尝试从 Flask 迁移到 FastAPI,我想知道是否有类似于 Flask 的东西:

payload = request.form.to_dict(flat=False)
payload = {key:payload[key][0] for key in payload}

对于 FastAPI。

到目前为止,我只发现了一些技巧,您是否仍然必须将表单的所有参数一一实现给函数:
from pydantic import BaseModel
class FormData(BaseModel):
    alfa: str=Form(...)
    vita: str=Form(...)
async def Home(request: Request, form_data:FormData)

这个例子当然比标准的表单处理在可读性上更好:
async def Home(username: str = Form(...), something_else: str = Form(...)):

但由于所有表单字段的必要声明,它仍然非常受限。

还有其他更不可知和优雅的方法吗?

提前致谢,如果这是我无法通过谷歌搜索找到的微不足道的问题,我深表歉意:)

最佳答案

您可以获得底层明星request并使用它的 request.form() 方法。它需要 python-multipart上类:

from fastapi import FastAPI, Request

app = FastAPI()

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

调用它的示例:
C:\>curl -X POST "http://localhost:8000/example" -d "hello=there&another=value"
{"hello":"there","another":"value"}

关于python - FastAPI 等效于 Flask 的 request.form,用于不可知的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62386287/

相关文章:

javascript - 从 json 获取值到 angularjs 对象

Python Beautifulsoup get_text() 没有获取所有文本

php - Laravel 4 Form::open 设置 Action

css - 在 Bootstrap 中完全居中表单

python - Plotly:如何在单个绘图图中使用两种色标?

python - 在正则表达式模式中查找可能组的名称

python - xPath 不进入下一页

python - 检查实例是否存在于列表中

django - 在多个 django 模板中重用相同的 "block"html

javascript - 无法在 Angular 2 应用程序中提交 HTML 表单