推荐答案
在 Flask 中使用 Jinja2 模板引擎非常简单。以下是一个基本的示例:
-- -------------------- ---- ------- ---- ----- ------ ------ --------------- --- - --------------- --------------- --- -------- ------ ----------------------------- ------------- ---------------- -- --- ---- ------- -- -------- -- ----------- -------------------
在这个示例中,render_template
函数用于渲染 index.html
模板,并将 title
和 content
变量传递给模板。
本题详细解读
1. Jinja2 模板引擎简介
Jinja2 是一个现代的、设计友好的 Python 模板引擎,广泛用于 Flask 框架中。它允许开发者将 Python 代码与 HTML 模板分离,从而实现动态内容的生成。
2. 模板文件结构
在 Flask 项目中,模板文件通常存放在 templates
目录下。例如,index.html
文件可以放在 templates
目录中。
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- --------- ----- ---------- ------- ------ ------ ------- ------- ------- -------
在这个模板中,{{ title }}
和 {{ content }}
是 Jinja2 的变量占位符,它们会被传递给模板的变量值替换。
3. 渲染模板
在 Flask 中,使用 render_template
函数来渲染模板。该函数接受模板文件名作为第一个参数,并可以传递任意数量的关键字参数作为模板变量。
@app.route('/') def index(): return render_template('index.html', title='Home', content='Welcome to the Home Page!')
4. 模板继承
Jinja2 支持模板继承,允许你创建一个基础模板,并在其他模板中扩展它。例如,创建一个 base.html
文件:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- --------- ----- ----- ---- -------- ---------- ------- ------ -------- ------ ------------ --------- ------ -- ----- ------- ---- -------- -- ------- ------- -------
然后在 index.html
中扩展 base.html
:
-- -------------------- ---- ------- -- ------- ----------- -- -- ----- ----- -- -- ----- -- -- -------- -- -- ----- ------- -- ------ ------- ------- -- -------- --
5. 控制结构
Jinja2 还支持控制结构,如 if
语句和 for
循环,可以在模板中进行条件判断和迭代操作。
-- -------------------- ---- ------- -- -- ---- -- ----------- -- ---- ------- -- ---- -- --------- --- ------- -- ----- -- ---- -- --- ---- -- ----- -- ------ ---- ------- -- ------ -- -----
通过这些功能,Jinja2 提供了强大的模板渲染能力,使得 Flask 应用能够轻松生成动态 HTML 内容。