Jupyter AI

12 模板渲染之模板变量的内容

📅发表日期: 2024-08-10

🏷️分类: Flask从零教程

👁️阅读次数: 0

在前一篇中,我们介绍了 Jinja2 模板的基本用法和语法,学习了如何通过 Flask 渲染模板。在这一篇中,我们将深入探讨如何在模板中使用变量,动态生成内容,并通过具体的案例来加深理解。

模板变量的基本概念

Jinja2 模板中,变量是通过使用双大括号 {{ }} 来表示的。当我们在 Flask 视图函数中渲染模板时,可以将一个或多个变量传递给模板,从而在页面上动态展示这些变量的值。

使用模板变量的示例

让我们来看一个简单的示例。假设我们要创建一个 Flask 应用,它能够显示用户的个人信息。

第一步:创建 Flask 应用

首先,创建一个新的 Flask 应用并定义路由:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    # 定义一个字典,包含用户信息
    user_info = {
        'name': 'Alice',
        'age': 28,
        'hobby': 'painting'
    }
    return render_template('index.html', user=user_info)

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

在上面的代码中,我们定义了一个字典 user_info,其中包含用户的名字、年龄和爱好。然后我们通过 render_template 函数将这个字典传递给模板 index.html

第二步:创建模板

接下来,我们需要在 templates 文件夹中创建 index.html 模板文件:

<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户信息</title>
</head>
<body>
    <h1>欢迎, {{ user.name }}!</h1>
    <p>你的年龄是: {{ user.age }} 岁</p>
    <p>爱好: {{ user.hobby }}</p>
</body>
</html>

index.html 中,我们使用 {{ user.name }}{{ user.age }}{{ user.hobby }} 来显示从 Flask 视图传递过来的变量。当我们运行这个应用并访问根路径时,将会看到如下输出:

欢迎, Alice!
你的年龄是: 28 岁
爱好: painting

第三步:条件语句和循环

Jinja2 模板还支持控制结构,比如条件语句和循环,这为我们提供了更大的灵活性。

1. 条件语句

添加一个条件判断,来显示用户的不同信息:

<p>
    {% if user.age >= 18 %}
        你已成年。
    {% else %}
        你是未成年人。
    {% endif %}
</p>

2. 循环

假设我们需要展示用户的多个爱好,我们可以将爱好存储在一个列表中,并通过循环进行渲染:

user_info = {
    'name': 'Alice',
    'age': 28,
    'hobbies': ['painting', 'reading', 'gaming']
}

更新模板以使用循环:

<p>爱好:</p>
<ul>
    {% for hobby in user.hobbies %}
        <li>{{ hobby }}</li>
    {% endfor %}
</ul>

最终的模板代码示例

将以上所有代码整合后,你的 index.html 文件应如下所示:

<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户信息</title>
</head>
<body>
    <h1>欢迎, {{ user.name }}!</h1>
    <p>你的年龄是: {{ user.age }} 岁</p>
    <p>
        {% if user.age >= 18 %}
            你已成年。
        {% else %}
            你是未成年人。
        {% endif %}
    </p>
    <p>爱好:</p>
    <ul>
        {% for hobby in user.hobbies %}
            <li>{{ hobby }}</li>
        {% endfor %}
    </ul>
</body>
</html>

总结

在本篇文章中,我们探讨了如何在 Flask 应用中使用 Jinja2 模板变量,动态渲染内容。我们学习了如何将数据从视图函数传递到模板,并展示这些数据。我们还介绍了条件语句和循环,使模板渲染更加灵活。

下一篇文章中,我们将讨论 Jinja2 的模板继承功能,它将帮助我们更好地管理和复用我们的模板代码。通过模板变量的灵活使用和模板继承的搭配,您将能够创建出更加动态、优雅的 Flask 应用。

💬 评论

暂无评论