FastAPI 模板渲染
在 FastAPI 中,可以通过集成模板引擎(如 Jinja2)实现网页渲染。以下是使用 Jinja2 渲染模板的步骤。
安装依赖
首先,确保安装了必要的依赖库:
pip install jinja2 aiofiles
jinja2:模板引擎,用于渲染 HTML。
aiofiles:支持异步文件操作,处理静态文件时需要。
设置目录结构
创建以下目录和文件:
project/
├── main.py
├── templates/
│ └── item.html
├── static/
│ └── styles.css
编写模板文件
在 templates/item.html 中编写 HTML 模板:
<html>
<head>
<title>Item Details</title>
<link href="{{ url_for('static', path='/styles.css') }}" rel="stylesheet">
</head>
<body>
<h1>Item ID: {{ id }}</h1>
</body>
</html>
实现 FastAPI 应用
在 main.py 中配置 FastAPI 应用:
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
app = FastAPI()
# 挂载静态文件目录
app.mount("/static", StaticFiles(directory="static"), name="static")
# 配置模板目录
templates = Jinja2Templates(directory="templates")
@app.get("/items/{id}", response_class=HTMLResponse)
async def read_item(request: Request, id: str):
return templates.TemplateResponse("item.html", {"request": request, "id": id})
运行应用
启动应用程序:
uvicorn main:app --reload
在浏览器中访问 http://127.0.0.1:8000/items/42,即可看到渲染的页面。
最佳实践
静态文件管理:将 CSS、JS 文件放入 static 目录,并通过 url_for 引用。
上下文传递:通过 context 字典传递动态数据到模板。
灵活性:FastAPI 支持替换 Jinja2 为其他模板引擎,如 Mako 或 Django Templates
此方法简单高效,适用于构建动态网页或管理前后端分离的项目。

浙公网安备 33010602011771号