介绍
业务开发绝大多数场景:后端传变量,html模板渲染生成页面。
安装
pip 安装
pip install jinja2
uv 安装
uv add jinja2
例子
项目目录结构
main.py
templates/ // 该目录用于存放模板文件
index.html // 模板文件
创建HTML模板
创建 templates/index.html 文件,内容如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Jinja模板</title>
</head>
<body>
<h1>你好 {{ name }}</h1>
<ul>
{% for item in list_data %}
<li>{{ item }}</li>
{% endfor %}
</ul>
</body>
</html>
实现main.py(fastapi推荐写法)
FastAPI官方封装 Jinja2Templates,更简洁:
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi.requests import Request
app = FastAPI()
# 指定模板路径
templates = Jinja2Templates(directory="templates")
@app.get("/goods", response_class=HTMLResponse)
async def goods(request: Request):
return templates.TemplateResponse(
request, # request必须传给模板
"index.html", # 模板文件名
{ # 传给模板的数据
"name":"张三",
"list_data":["苹果","香蕉","橙子"]
}
)
注意:必须传入 request,否则模板内部分功能报错。