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
此方法简单高效,适用于构建动态网页或管理前后端分离的项目。

posted @ 2025-08-29 17:51  赏金猎人小熊  阅读(29)  评论(0)    收藏  举报