Flask入门:模板引擎Jinja2详解

0 下载量 88 浏览量 更新于2024-09-01 收藏 82KB PDF 举报
"Flask 入门教程:模板引擎与 Jinja2 使用详解" Flask 是一个轻量级的 Python Web 开发框架,它提供了强大的模板引擎功能,使得开发者能够方便地创建动态网页。在这里,我们将深入探讨 Flask 中的模板引擎——Jinja2,以及如何在实际开发中运用它。 **模板引擎** 模板引擎允许开发者编写静态的 HTML 文件,并在其中嵌入可动态变化的数据。Jinja2 是 Flask 默认的模板引擎,它支持丰富的控制结构和过滤器,使开发者能灵活地处理数据并呈现到页面上。 **使用 Jinja2 渲染模板** 在 Flask 中,有以下两种方法来渲染模板: 1. **render_template()**: 这个函数用于渲染存储在 templates 目录下的模板文件。例如,当你调用 `return render_template('index.html')` 时,Flask 将寻找名为 'index.html' 的模板文件,并将其渲染后返回给客户端。 2. **render_template_string()**: 这个函数接收一个字符串作为参数,然后将其作为模板进行渲染。例如,`return render_template_string('<h1 style="color:green;font-size:18px;">原谅色</h1>')` 将直接返回一个渲染后的字符串。 **模板语法** Jinja2 模板主要有两种语法: 1. **变量**: 使用双大括号 `{{ }}` 包裹变量。例如,如果你在视图函数中传递了一个字典 `{'title': '首恶'}`,那么在模板中可以使用 `{{ title }}` 来显示这个变量的值。 2. **标签**: 使用 `%{ }%` 表示控制结构,如条件语句、循环等。例如,`{% if condition %}...{% endif %}`。 **过滤器** Jinja2 提供了多种过滤器,可以通过管道符号 `|` 来应用。以下是一些常见的过滤器: 1. **abs()**: 返回数值的绝对值,如 `{{ -5|abs }}` 将输出 `5`。 2. **default()**: 设置默认值,当变量不存在时使用默认值。如果设置 `boolean=True`,则当变量为 falsy 时也会使用默认值。 3. **first()**: 获取列表的第一个元素,如 `{{ [1,2,3]|first }}` 输出 `1`。 4. **last()**: 获取列表的最后一个元素,如 `{{ [1,2,3]|last }}` 输出 `3`。 5. **format()**: 字符串格式化,如 `{{ '我叫{}我今年{}岁了我的存款为{}'|format('罗铁汉',38,23.5) }}`。 6. **length()**: 返回序列或字符串的长度,如 `{{ [1,2,3,4]|length }}` 输出 `4`。 7. **join()**: 将列表元素拼接成字符串,如 `{{ [1,2,3,4]|join(',') }}` 输出 `'1,2,3,4'`,或 `{{ [1,2,3,4]|join('x') }}` 输出 `'1x2x3x4'`。 8. **safe()**: 标记内容为安全,防止 HTML 转义,如 `{{ '<b>bold</b>'|safe }}` 会原样显示 `<b>bold</b>`。 9. **lower()**: 转换字符串为小写,如 `{{ 'UPPERCASE'|lower }}` 输出 `'uppercase'`。 10. **upper()**: 转换字符串为大写,如 `{{ 'lowercase'|upper }}` 输出 `'LOWERCASE'`。 11. **replace()**: 替换字符串中的子串,如 `{{ 'hello world'|replace('world', 'universe') }}` 输出 `'hello universe'`。 掌握这些基本知识后,你就可以开始使用 Flask 和 Jinja2 创建复杂的动态网站了。在实际开发中,你可能会遇到更多的模板控制结构和过滤器,不断探索和学习将使你的 Web 应用更加强大和灵活。