新建这样的目录结构
main.py的代码如下
from fastapi import FastAPI
from fastapi.templating import Jinja2Templates
app = FastAPI()
# 初始化 Jinja2 模板引擎
templates = Jinja2Templates(directory="templates")
@app.get("/")
async def home():
context = {"request": {"path": "/", "query": ""}, "message": "Hello, World!"}
return templates.TemplateResponse("index.html", context)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
index.html的代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home Page</title>
</head>
<body>
<h1>{{ message }}</h1>
</body>
</html>
在终端中运行main.py后
在浏览器中输入127.0.0.1:8000的地址访问服务器,得到如下结果
fastapi和flask很像,但fastapi不直接支持HTML 渲染,可以使用第三方库如 jinja2 来实现这一点
在这个 HTML 文件中,{{ message }} 是一个占位符,它会被 Jinja2 模板引擎替换为从视图函数传递过来的实际消息