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

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

模板变量的基本概念

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

使用模板变量的示例

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

第一步:创建 Flask 应用

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 模板文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!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 视图传递过来的变量。当我们运行这个应用并访问根路径时,将会看到如下输出:

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

第三步:条件语句和循环

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

1. 条件语句

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

1
2
3
4
5
6
7
<p>
{% if user.age >= 18 %}
你已成年。
{% else %}
你是未成年人。
{% endif %}
</p>

2. 循环

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

1
2
3
4
5
user_info = {
'name': 'Alice',
'age': 28,
'hobbies': ['painting', 'reading', 'gaming']
}

更新模板以使用循环:

1
2
3
4
5
6
<p>爱好:</p>
<ul>
{% for hobby in user.hobbies %}
<li>{{ hobby }}</li>
{% endfor %}
</ul>

最终的模板代码示例

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!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 应用。

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

https://zglg.work/flask-zero/12/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论