在 Flask 中,模板引擎是用于在视图函数中渲染动态内容的重要组成部分。Flask 默认使用 Jinja2 模板引擎,它允许你在 HTML 中嵌入动态内容并使用模板语法。以下是关于 Flask 模板的基本概念:

1. 安装 Jinja2

Flask 默认包含 Jinja2,所以你不需要额外安装。如果你使用的是虚拟环境,确保你的虚拟环境中已经安装了 Flask。

2. 创建模板文件

在你的 Flask 应用中,通常会在一个名为 templates 的文件夹中创建模板文件。例如,可以创建一个名为 index.html 的模板文件:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ greeting }}</h1>
    <p>Welcome to my Flask App!</p>
</body>
</html>

在这个模板中,{{ title }} 和 {{ greeting }} 是变量,它们将在渲染时被实际的值替代。

3. 渲染模板

在视图函数中,使用 render_template 函数来渲染模板。例如:
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', title='Home Page', greeting='Hello, Flask!')

if __name__ == '__main__':
    app.run(debug=True)

在这个例子中,render_template 函数接受一个模板文件名和一系列变量,并将它们渲染到模板中。这样,当用户访问应用的根路径时,将看到包含动态内容的页面。

4. 模板控制结构

Jinja2 支持一系列的控制结构,如条件语句和循环,允许你在模板中执行一些逻辑。以下是一些简单的示例:
{% if user %}
    <p>Hello, {{ user }}!</p>
{% else %}
    <p>Hello, Guest!</p>
{% endif %}

<ul>
    {% for item in items %}
        <li>{{ item }}</li>
    {% endfor %}
</ul>

在这个例子中,使用了 {% if ... %} 和 {% for ... %} 等控制结构。

5. 模板过滤器

Jinja2 还支持过滤器,用于在变量上执行额外的操作。以下是一些示例:
<p>{{ text|capitalize }}</p>  <!-- 将文本首字母大写 -->
<p>{{ number|format('.2f') }}</p>  <!-- 将数字格式化为保留两位小数的字符串 -->

这些是一些关于 Flask 模板的基本概念。通过合理使用模板,你可以将动态数据嵌入到静态 HTML 页面中,从而创建出更具交互性和动态性的 Web 应用。


转载请注明出处:http://www.zyzy.cn/article/detail/7303/Flask