FastAPI教程--返回HTML-使用Jinja2模板渲染

介绍

业务开发绝大多数场景:后端传变量,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,否则模板内部分功能报错。


原文出处:/show_1GW3riOo6Vi8.html