[Flask][02]Jinja2模板设计文档——基础知识

版权声明

本文出自 “ 幻冥极地 ” 博客 ,作者 小貘 采用 署名-非商业性使用-相同方式共享 协议。转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
https://www.moorehy.com/archives/197

过滤器 (Filters)

变量可以被 过滤器 修改。过滤器通过一个管道符号( | )从变量中分离开,并且可以通过小括号传入可选参数。多个过滤器可以级联。一个过滤器的输出将被用于下个过滤器的输入。

例如, {{ name|striptags|title }} 将删除变量 name 中的所有HTML标签,并且作为标题(title-case)输出( title(striptags(name)) )。

接受参数的过滤器在参数周围用小括号包裹,就像函数调用那样。比如: {{ listx|join(', ') }} 将使用逗号连接一个列表( str.join(', ', listx) )。

下文的 内建过滤器列表 将描述所有内建的过滤器。

测试 (Tests)

除了过滤器,也有所谓的”测试”可用。测试可用于根据常用表达式测试变量。为了测试一个变量或表达式,您需要在变量后添加一个 is 和测试名。例如,为了找出一个变量是否被定义,您可以添加 name is defined ,根据当前模板上下文中 name 是否被定义,表达式将返回 true 或者 false

测试也可以接受参数。如果测试仅接受一个参数,您可以省略小括号。例如,下面的两个表达式效果相同:

下文的 内建测试列表 将描述所有内建的测试。

注释 (Comments)

模板中块注释的默认语法为 {# ... #} 。这对于注释掉部分模板从而便于调试,或者为自己或其他模板设计者添加说明信息非常有用:

空白控制 (Whitespace Control)

在默认配置中:

  • 如果存在单个的行尾换行符,则去除
  • 其他空白字符将原样返回,如:空格、制表符、换行符等

如果一个应用配置 Jinja 为块修剪( trim_blocks ),模板标签后的第一个换行将被自动移除(像PHP那样)。也可以设置 lstrip_blocks 选项,来去除从一行开始到块开始的制表符和空格。(如果在块开始前有其他字符,则不会去除任何内容。)

通过开启 trim_blockslstrip_blocks ,您可以将块标记放在其自己的杭上,整个块行将在呈现时被删除,仅保留内容中的空白字符。例如:不设置 trim_blockslstrip_blocks 选项,这个模板:

在 div 中将被渲染为空白行:

但是同时开启 trim_blockslstrip_blocks ,模板块所在行将被移除,其余空白字符被保留:

您可以通过在块首增加一个加号( + )从而手动禁用 lstrip_blocks 行为:

您也可以手动去除模板中的空白。如果您在一个块(如: For 标签块),注释,或变量表达式的开始或结尾添加一个减号( - ),那么块前或后的空白将被移除:

这将产生所有元素,且之间没有空白字符。如果 seq 是一个从 19 的数字列表,输出将为 123456789

如果开启行语句 ( Line Statements ),将自动去除行首前的空白字符。

Jinja2 默认删除行尾换行。为了保留单独的行尾换行,配置 Jinja 的 keep_trailing_newline

注意

不要在标签和减号间加空格。

有效

无效

One thought on “[Flask][02]Jinja2模板设计文档——基础知识

发表评论

电子邮件地址不会被公开。 必填项已用*标注