Flask 模板

17 Mar 2025 | 4 分钟阅读

在之前的示例中,我们已经从视图函数返回了简单的字符串作为响应。 尽管如此,Flask 还是方便我们以 HTML 模板的形式返回响应。 在本教程的这一部分中,我们将介绍可以使用哪些方法从 Web 应用程序返回 HTML 响应。

示例

以下 Flask 脚本包含一个视图函数,即与 URL '/' 关联的 message()。 它没有返回简单的纯字符串作为消息,而是使用 HTML 返回带有 <h1> 标签的消息。

script.py

Flask Templates

呈现外部 HTML 文件

Flask 方便我们呈现外部 HTML 文件,而不是在视图函数中硬编码 HTML。 在这里,我们可以利用 Flask 所基于的 jinja2 模板引擎。

Flask 提供了 render_template() 函数,该函数可用于呈现外部 HTML 文件,以作为来自视图函数的响应返回。

请看以下示例。

示例

要从视图函数呈现 HTML 文件,我们首先创建一个名为 message.html 的 HTML 文件。

message.html

script.py

在这里,我们必须在应用程序目录中创建文件夹模板,并将 Flask 脚本中引用的 HTML 模板保存在该目录中。

在我们的例子中,脚本文件script.py的路径是 E:\flask,而 HTML 模板的路径是 E:\flask\templates

应用程序目录

  • script.py
  • 模板
  • message.html
Flask Templates

分隔符

Jinga 2 模板引擎提供了一些分隔符,可以在 HTML 中使用它们,使其能够动态表示数据。 模板系统提供了一些 HTML 语法,它们是变量和表达式的占位符,当模板呈现时,这些占位符会被替换为它们实际的值。

jinga2 模板引擎提供以下分隔符以从 HTML 中转义。

  • {% ... %} 用于语句
  • {{ ... }} 用于将表达式打印到模板输出
  • {# ... #} 用于未包含在模板输出中的注释
  • # ... ## 用于行语句

示例

考虑以下示例,其中 URL 的变量部分使用 {{ ... }} 分隔符显示在 HTML 脚本中。

message.html

script.py

Flask Templates

URL https://:5000/user/admin 的变量部分使用 {{name}} 占位符显示在 HTML 脚本中。

在 HTML 中嵌入 Python 语句

由于 HTML 是一种标记语言,仅用于设计目的,因此有时在 Web 应用程序中,我们可能需要执行语句以进行通用计算。 为此,Flask 提供了分隔符 {%...%},该分隔符可用于将简单的 python 语句嵌入到 HTML 中。

示例

在以下示例中,我们将打印 URL 中指定的数字的表格,即 URL https://:5000/table/10 将在浏览器的窗口中打印 10 的表格。

在这里,我们必须注意,for 循环语句包含在 {%...%} 分隔符中,而循环变量和数字包含在 {{ ... }} 占位符中。

script.py

print-table.py

Flask Templates

在 HTML 中引用静态文件

静态文件(例如 CSS 或 JavaScript 文件)可以增强 HTML 网页的显示效果。 Web 服务器被配置为从包中的静态文件夹或模块旁边提供此类文件。 静态文件位于应用程序的路径/static上。

示例

在以下示例中,Flask 脚本返回 HTML 文件,即message.html,该文件使用样式表style.css设置样式。 Flask 模板系统在static/css目录中查找静态 CSS 文件。 因此 style.css 保存在指定的路径中。

script.py

message.html

style.css

Flask Templates
下一主题Flask 请求对象