数据处理

赋值

在模板中,可以对变量重新赋值。在循环体和宏控制块内,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) %}