推荐答案
在 FastAPI 中使用模板可以通过集成 Jinja2
模板引擎来实现。以下是一个简单的示例,展示如何在 FastAPI 中使用模板:
-- -------------------- ---- ------- ---- ------- ------ -------- ------- ---- ----------------- ------ ------------ ---- ------------------ ------ --------------- --- - --------- - ------------------- --------- - -------------------------------------- ------------- ---------------------------- ----- --- ------------------ --------- - ------------ ------ ---------------------------------------- ----------- -------- ---------- ------- -----------
在这个示例中,Jinja2Templates
用于加载模板文件,TemplateResponse
用于渲染模板并返回 HTML 响应。
本题详细解读
1. 安装依赖
首先,确保你已经安装了 Jinja2
模板引擎。可以通过以下命令安装:
pip install jinja2
2. 创建模板文件
在项目根目录下创建一个名为 templates
的文件夹,并在其中创建一个 index.html
文件。例如:
-- -------------------- ---- ------- ---- -------------------- --- --------- ----- ----- ---------- ------ ----- ---------------- -------------- ---------------- ------- ------ ------ ------- ------- ------- -------
3. 初始化模板引擎
在 FastAPI 应用中,使用 Jinja2Templates
初始化模板引擎,并指定模板文件所在的目录:
templates = Jinja2Templates(directory="templates")
4. 渲染模板
在路由处理函数中,使用 TemplateResponse
渲染模板并传递上下文数据。request
对象是必须的,因为它包含了请求的上下文信息:
@app.get("/", response_class=HTMLResponse) async def read_root(request: Request): return templates.TemplateResponse("index.html", {"request": request, "message": "Hello, FastAPI!"})
5. 运行应用
启动 FastAPI 应用后,访问根路径 /
,你将看到渲染后的 HTML 页面,显示 "Hello, FastAPI!"。
6. 模板语法
在模板文件中,你可以使用 Jinja2 的模板语法来动态生成内容。例如:
{% if user %} <p>Welcome, {{ user.name }}!</p> {% else %} <p>Please log in.</p> {% endif %}
通过这种方式,你可以在 FastAPI 中灵活地使用模板引擎来生成动态 HTML 页面。