欢迎访问宙启技术站
智能推送

使用Python的FastAPI和Form()函数实现表单处理和验证

发布时间:2023-12-15 23:00:22

FastAPI是一个基于Python的高性能Web框架,它提供了快速且简单的方式来构建Web应用程序。Form()函数是FastAPI提供的一个功能强大的表单处理和验证工具。下面我们将使用FastAPI和Form()函数来展示一个简单的表单处理和验证的例子。

首先,我们需要安装FastAPI和uvicorn:

pip install fastapi
pip install uvicorn

接下来,创建一个名为main.py的Python文件,并编写以下代码:

from fastapi import FastAPI, Form
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get("/")
def home():
    return HTMLResponse("""
        <html>
            <body>
                <form method="POST" action="/process_form">
                    <input type="text" name="username" placeholder="Enter your username" required>
                    <br>
                    <input type="password" name="password" placeholder="Enter your password" required>
                    <br>
                    <input type="submit" value="Submit">
                </form>
            </body>
        </html>
    """)

@app.post("/process_form")
def process_form(username: str = Form(...), password: str = Form(...)):
    if username == "admin" and password == "password":
        return {"message": "Login successful!"}
    else:
        return {"message": "Invalid username or password"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

在上面的代码中,我们定义了一个FastAPI应用程序,并创建了一个路由函数home(),该函数返回一个包含用户名和密码输入框的HTML表单。我们使用Form()函数来声明username和password参数,并指定了参数的类型为str。Form()函数还可以接受一些验证规则,例如min_length、max_length、regex等等。

在路由函数process_form()中,我们通过注解的方式将Form()函数声明的参数传入,并使用了...表示这些参数是必需的。在函数体中,我们对用户名和密码进行简单的验证,如果输入的用户名和密码为"admin"和"password",则返回登录成功的消息,否则返回用户名或密码无效的消息。

最后,我们通过运行uvicorn.run()来启动FastAPI应用程序。运行以下命令启动应用:

uvicorn main:app --reload

现在,我们可以在浏览器中访问http://localhost:8000来查看我们的表单。输入"admin"作为用户名和"password"作为密码,并点击提交按钮,应该会看到一个登录成功的消息。

这只是一个非常简单的例子,FastAPI和Form()函数提供了更多可用的选项来实现更复杂的表单验证和处理逻辑。你可以使用min_length、max_length等参数来验证输入的长度,也可以使用正则表达式来验证特定的格式要求。另外,FastAPI还提供了Pydantic模型的支持,你可以使用Pydantic模型来定义更复杂的表单结构和验证规则。

总结起来,FastAPI和Form()函数提供了一个快速而简洁的方式来处理和验证表单。它使得构建Web应用程序变得简单而高效,同时提供了强大的验证功能来确保输入的数据符合预期。