处理表单提交
在 FastAPI 中,您可以使用 Form
参数注入来接收表单数据。Form
参数注入将会从表单数据中提取相应的字段值,并将它们转换为 Python 对象。例如,如果您的表单模型有一个名为 username
的字段,您可以使用 Form(...)
来注入该字段的值。例如:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login")
async def login(username: str = Form(...), password: str = Form(...)):
# 处理表单提交
# ...
在上面的代码中,我们定义了一个 /login
路由,该路由使用 Form
参数注入来接收表单数据。例如,如果表单提交的数据包含了一个名为 username
的字段,FastAPI 会将该字段的值注入到 username
参数中。
当您处理表单提交时,您可以根据表单数据的内容进行不同的处理。例如,您可以使用 SQLAlchemy 将表单数据存储到数据库中。下面是一个使用 SQLAlchemy 存储表单数据的示例:
代码语言:javascript复制from fastapi import FastAPI, Form
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建数据库连接
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# 创建数据表
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True, index=True)
password = Column(String)
# 创建 FastAPI 应用程序
app = FastAPI()
@app.post("/register")
async def register(username: str = Form(...), password: str = Form(...)):
# 创建数据库会话
db = SessionLocal()
# 创建用户
user = User(username=username, password=password)
# 添加用户到数据库
db.add(user)
db.commit()
# 返回注册成功消息
return {"message": "User registered successfully"}
在上面的代码中,我们首先创建了一个数据库连接。然后我们定义了一个 User
模型,用于描述用户数据。在 /register
路由中,我们首先创建了一个数据库会话,然后使用表单数据创建了一个 User
对象,最后将该对象添加到数据库中并提交更改。如果一切顺利,我们将返回一个包含成功消息的 JSON 对象。