FastAPI 怎么用 HTML Form 处理表单模板?

文章导读
Previous Quiz Next 让我们在 FastAPI - 静态文件 章节中创建的应用程序中添加另一个路由 "/login",它会渲染一个包含简单登录表单的 HTML 模板。登录页面的 HTML 代码如下 −
📋 目录
  1. 示例 - 添加登录页面
A A

FastAPI - HTML 表单模板



Previous
Quiz
Next

让我们在 FastAPI - 静态文件 章节中创建的应用程序中添加另一个路由 "/login",它会渲染一个包含简单登录表单的 HTML 模板。登录页面的 HTML 代码如下 −

示例 - 添加登录页面

login.html

<html>
   <body>
      <form action="/submit" method="POST">
         <h3>Enter User name</h3>
         <p><input type='text' name='nm'/></p>
         <h3>Enter Password</h3>
         <p><input type='password' name='pwd'/></p>
         <p><input type='submit' value='Login'/></p>
      </form>
   </body>
</html>

注意,action 参数设置为 "/submit" 路由,method 设置为 POST。这将在后续讨论中很重要。

main.py 文件中添加 login() 函数,如下所示 −

main.py

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles

app = FastAPI()
templates = Jinja2Templates(directory="templates")
app.mount("/static", StaticFiles(directory="static"), name="static")

@app.get("/hello/{name}", response_class=HTMLResponse)
async def hello(request: Request, name:str):
   return templates.TemplateResponse("hello.html", {"request": request, "name":name})
   
@app.get("/login/", response_class=HTMLResponse)
async def login(request: Request):
   return templates.TemplateResponse("login.html", {"request": request})

输出

URL http://localhost:8000/login 将渲染登录表单,如下所示 −

FastAPI HTML Form Templates