FastAPI 访问表单数据
现在我们将看到如何在FastAPI操作函数中访问HTML表单数据。在上面的例子中,/login路由渲染了一个登录表单。用户输入的数据被提交到 /submit URL,请求方法为POST。现在我们必须提供一个视图函数来处理用户提交的数据。
FastAPI有一个Form类来处理通过提交HTML表单而收到的请求数据。然而,你需要安装 python-multipart 模块。它是一个用于Python的流式多部件表单解析器。
pip3 install python-multipart
在从FastAPI导入的资源中添加 表单 类。
from fastapi import Form
让我们定义一个 submit() 函数,由@app.post()
进行装饰。为了接收表单数据,声明两个表单类型的参数,其名称与表单属性相同。
@app.post("/submit/")
async def submit(nm: str = Form(...), pwd: str = Form(...)):
return {"username": nm}
填写完文本字段后按提交。浏览器将被重定向到/submit URL,并呈现JSON响应。检查 /submit 路由的Swagger API文档。它正确地识别了 nm 和 pwd 作为请求主体参数,以及表单的 “媒体类型 “为 application/x-www-form-urlencoded 。
它甚至可以用HTML表单数据来填充和返回Pydantic模型。在下面的代码中,我们将User类声明为一个Pydantic模型,并将其对象作为服务器的响应来发送。
from pydantic import BaseModel
class User(BaseModel):
username:str
password:str
@app.post("/submit/", response_model=User)
async def submit(nm: str = Form(...), pwd: str = Form(...)):
return User(username=nm, password=pwd)