一. 简介
过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,还需要修改变量的显示,甚至格式话、运算等等,而在模板中是不能直接调用Python中的某些方法,那么这就用到了过滤器。
二. 使用方法
使用方式为:变量名|过滤器
{{ variable | filter_bane(*args) }}
如果没有任何参数传给过滤器,则可以把括号省略掉
{{ variable|filter_name }}
三. 链式调用
在jinja2中,过滤器是可以支持链式调用的,示例如下:
{{ "hello world" | reverse | upper }}
代码含义就是将hello world
先反转再大写,变成DLROW OLLEH
。
{{ "hello world" | reverse | upper | reverse }}
代码含义就是将hello world
先反转再大写再反转,变成HELLO WORLD
。
四. 常见内建过滤器
4.1 字符串操作
过滤器 | 功能 | 备注 | 使用方法 |
---|---|---|---|
safe | 禁用转义 | {{ '<em>hello</em>'|safe }} | |
capitalize | 首字母大写 | 变量的首字母大写,其余字母小写 | {{ 'hello'|capitalize}} |
lower | 字母小写 | {{ 'HELLO'|lower}} | |
upper | 字母大写 | {{ 'hello'|upper}} | |
title | 单词首字母大写 | 把值中每个单词的 首字母大写 | {{ 'hello world'|title}} |
reverse | 字符串反转 | {{ 'hello'|reverse}} | |
format | 格式话输出 | {{ '%s is %d'|format('name', 17) }} | |
striptags | 去标签 | 渲染之前把值中的所有HTML标签都删掉 | {{ '<em>hello</em>'|striptags}} |
truncate | 字符串截断 | {{ 'hello every one'|truncate(9) }} |
4.2 列表操作
过滤器 | 用途 | 使用方法 |
---|---|---|
first | 取第一个元素 | {{ [1, 2, 3, 4, 5, 6] | first }} |
last | 取最后一个元素 | {{ [1, 2, 3, 4, 5, 6] | last }} |
length | 获取列表长度 | {{ [1, 2, 3, 4, 5, 6] | length }} |
sum | 列表求和 | {{ [1, 2, 3, 4, 5, 6] | sum }} |
sort | 列表排序 | {{ [6, 2, 3, 5, 4, 1] | sort}} |
4.3 语句块过滤
{% filter upper %}
一堆文字
{% endfilter %}