可以使用jinja2模板中的内置过滤器来处理字符串和数字


字符串操作

{# 当变量未定义时,显示默认字符串,可以缩写为d #}

<p>{{ name | default('No name', true) }}</p>

 

{# 单词首字母大写 #}

<p>{{ 'hello' | capitalize }}</p>

 

{# 单词全小写 #}

<p>{{ 'XML' | lower }}</p>

 

{# 去除字符串前后的空白字符 #}

<p>{{ '  hello  ' | trim }}</p>

 

{# 字符串反转,返回"olleh" #}

<p>{{ 'hello' | reverse }}</p>

 

{# 格式化输出,返回"Number is 2" #}

<p>{{ '%s is %d' | format("Number", 2) }}</p>

 

{# 关闭HTML自动转义 #}

<p>{{ '<em>name</em>' | safe }}</p>

 

{% autoescape false %}

{# HTML转义,即使autoescape关了也转义,可以缩写为e #}

<p>{{ '<em>name</em>' | escape }}</p>

{% endautoescape %}



数值操作

{# 四舍五入取整,返回13.0 #}

<p>{{ 12.8888 | round }}</p>

 

{# 向下截取到小数点后2位,返回12.88 #}

<p>{{ 12.8888 | round(2, 'floor') }}</p>

 

{# 绝对值,返回12 #}

<p>{{ -12 | abs }}</p>


列表操作

{# 取第一个元素 #}

<p>{{ [1,2,3,4,5] | first }}</p>

 

{# 取最后一个元素 #}

<p>{{ [1,2,3,4,5] | last }}</p>

 

{# 返回列表长度,可以写为count #}

<p>{{ [1,2,3,4,5] | length }}</p>

 

{# 列表求和 #}

<p>{{ [1,2,3,4,5] | sum }}</p>

 

{# 列表排序,默认为升序 #}

<p>{{ [3,2,1,5,4] | sort }}</p>

 

{# 合并为字符串,返回"1 | 2 | 3 | 4 | 5" #}

<p>{{ [1,2,3,4,5] | join(' | ') }}</p>

 

{# 列表中所有元素都全大写。这里可以用upper,lower,但capitalize无效 #}

<p>{{ ['tom','bob','ada'] | upper }}</p>


字典列表操作


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

{% set users=[{'name':'Tom','gender':'M','age':20},

              {'name':'John','gender':'M','age':18},

              {'name':'Mary','gender':'F','age':24},

              {'name':'Bob','gender':'M','age':31},

              {'name':'Lisa','gender':'F','age':19}]

%}

 

 

 

{# 按指定字段排序,这里设reverse为true使其按降序排 #}

<ul>

{% for user in users | sort(attribute='age', reverse=true) %}

     <li>{{ user.name }}, {{ user.age }}</li>

{% endfor %}

</ul>

 

{# 列表分组,每组是一个子列表,组名就是分组项的值 #}

<ul>

{% for group in users|groupby('gender') %}

    <li>{{ group.grouper }}<ul>

    {% for user in group.list %}

        <li>{{ user.name }}</li>

    {% endfor %}</ul></li>

{% endfor %}

</ul>

 

{# 取字典中的某一项组成列表,再将其连接起来 #}

<p>{{ users | map(attribute='name') | join(', ') }}</p>




参考:

http://www.ttlsa.com/python/flask-jinja2-template-engine-filter/