FastAPI - HTML 表单模板
让我们在 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 将渲染登录表单,如下所示 −
