推荐答案
在 Flask 中使用 Jinja2 模板引擎非常简单。以下是一个基本的示例:
// www.javascriptcn.com code example
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', title='Home', content='Welcome to the Home Page!')
if __name__ == '__main__':
app.run(debug=True)在这个示例中,render_template 函数用于渲染 index.html 模板,并将 title 和 content 变量传递给模板。
本题详细解读
1. Jinja2 模板引擎简介
Jinja2 是一个现代的、设计友好的 Python 模板引擎,广泛用于 Flask 框架中。它允许开发者将 Python 代码与 HTML 模板分离,从而实现动态内容的生成。
2. 模板文件结构
在 Flask 项目中,模板文件通常存放在 templates 目录下。例如,index.html 文件可以放在 templates 目录中。
// www.javascriptcn.com code example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ content }}</h1>
</body>
</html>在这个模板中,{{ 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 文件:
// www.javascriptcn.com code example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<header>
<h1>My Website</h1>
</header>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>然后在 index.html 中扩展 base.html:
// www.javascriptcn.com code example
{% extends "base.html" %}
{% block title %}
{{ title }}
{% endblock %}
{% block content %}
<h1>{{ content }}</h1>
{% endblock %}5. 控制结构
Jinja2 还支持控制结构,如 if 语句和 for 循环,可以在模板中进行条件判断和迭代操作。
// www.javascriptcn.com code example
{% if user %}
<p>Welcome, {{ user }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>通过这些功能,Jinja2 提供了强大的模板渲染能力,使得 Flask 应用能够轻松生成动态 HTML 内容。