数据处理
赋值
在模板中,可以对变量重新赋值。在循环体和宏控制块内,set
赋值仅对当前块有效,不在控制块范围内,对全局有效。当需要在控制块内设置全局变量时,使用set_global
语句。
{% set my_var = "hello" %}
{% set my_var = 1 + 4 %}
{% set my_var = some_var %}
{% set my_var = macros::some_macro() %}
{% set my_var = global_fn() %}
{% set my_var = [1, true, some_var | round] %}
设置全局变量
{% set_global my_var = "hello" %}
{% set_global my_var = 1 + 4 %}
{% set_global my_var = some_var %}
{% set_global my_var = macros::some_macro() %}
{% set_global my_var = global_fn() %}
{% set_global my_var = [1, true, some_var | round] %}
过滤器
过滤器用来更改输出的内容。过滤器之间使用竖线(|
)分割,带参数的过滤器需要用小括号括起来,当前过滤器的输入为上一段输出,最终输出的内容为最后一个过滤器的输出。
过滤器可以和算术运算符一起使用,其优先级最低。
{{ 1 + a | length }}
// 等同于下面的语句
{{ (1 + a) | length }} // 在某些语义会出现错误
// 推荐这种写法
{{ a | length + 1 }}
过滤可以作用于整个内容块。使用{% filter name %}
和 {% endfilter %}
包裹住内容,name
是过滤器的名称。
{% filter upper %}
Hello
{% endfilter %}
上面输出全部大写的字符串HELLO
。
过滤器块内部支持模板继承的block
标记。
{% filter upper %}
{% block content_to_be_upper_cased %}
This will be upper-cased
{% endblock content_to_be_upper_cased %}
{% endfilter %}
断言测试
用来检测输入是否满足断言。下面示例,用来检测输入是否为奇数。
{% if my_number is odd %}
Odd
{% endif %}
支持取反操作
{% if my_number is not odd %}
Even
{% endif %}
函数
道盒发布提供许多内置函数用于完成常见的操作。使用的形式如下:
{{ url_for(name="home") }}
函数参数使用小括号包裹,参数对使用name=value
的形式,多个参数对使用逗号分割。
函数使用在以下地方
- 变量块:
{{ url_for(name="home") }}
- 循环体:
{% for i in range(end=5) %}