推荐答案
在 FastAPI 中使用模板可以通过集成 Jinja2 模板引擎来实现。以下是一个简单的示例,展示如何在 FastAPI 中使用模板:
// www.javascriptcn.com code example
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
app = FastAPI()
# 初始化模板引擎,指定模板文件所在的目录
templates = Jinja2Templates(directory="templates")
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request):
# 渲染模板并传递上下文数据
return templates.TemplateResponse("index.html", {"request": request, "message": "Hello, FastAPI!"})在这个示例中,Jinja2Templates 用于加载模板文件,TemplateResponse 用于渲染模板并返回 HTML 响应。
本题详细解读
1. 安装依赖
首先,确保你已经安装了 Jinja2 模板引擎。可以通过以下命令安装:
pip install jinja2
2. 创建模板文件
在项目根目录下创建一个名为 templates 的文件夹,并在其中创建一个 index.html 文件。例如:
// www.javascriptcn.com code example
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>FastAPI Template</title>
</head>
<body>
<h1>{{ message }}</h1>
</body>
</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 页面。