-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfilter-template.html
261 lines (195 loc) · 8.55 KB
/
filter-template.html
1
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
## ==============================================================================
## filter 过滤器标签
## http://jinja.pocoo.org/docs/2.10/templates/#list-of-builtin-filters
## ==============================================================================
## 大写转换处理
## -------------------------------------------------------------------------------
{% filter upper %}
This text becomes uppercase
{% endfilter %}
## 翻转转换处理,然后首字母大写
## -------------------------------------------------------------------------------
{% filter reverse | title %}
This text becomes uppercase
{% endfilter %}
## ==============================================================================
## filter 内置过滤器
## ==============================================================================
##常用的过滤器有:
##-------------------------------------------------------------------------------
{#
过滤器名称 说明
-------------------------------------------------------------------------------
reject
rejectattr
select
selectattr
attr 取对象属性值
tojson 转换json
xmlattr 转换xml
unique 去掉重复的集合元素
slice 切片,平分N等份
reverse 翻转集合或对象
random 从集合中随机一个元素
map 过滤
groupby 按公共属性将对象分组
batch 集合序列批量补齐数据
dictsort 对dict和yield(键,值)对进行排序
sort 对可迭代进行排序:sort(value, reverse=False, case_sensitive=False, attribute=None)
first 获取序列或集合的第一个元素
last 获取序列或集合的最后一个元素
length/count 获取序列或映射长度
list 将值转换为列表
join 拼接多个值为字符串
default/d 未定义,则返回传递的默认值
escape/e 转义 &, <, >, ‘, and ”
safe 渲染时值不转义
forceescape 强制转义
indent 缩进字符串格式排版
center 将值置于给定宽度的字段中
capitialize 把值的首字母转换成大写,其他子母转换为小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值的首尾空格去掉
striptags 渲染之前把值中所有的HTML标签都删掉
replace 替换字符串的值
format 格式化:{{ "%s - %s" | format("Hello?", "Foo!") }}
wordcount 单词统计
wordwrap 字符串超出79 长度就换行分词
urlencode UTF8 编码 URL
urlize 纯文本可以点击的链接
abs 绝对值
round 默认对数字进行四舍五入,也可以用参数进行控制
max 最大值:max(value, case_sensitive=False, attribute=None)
min 最小值:min(value, case_sensitive=False, attribute=None)
sum 集合求和
int 把值转换成整型
float 转换数据类型
string 转换string
filesizeformat 文件大小格式化
pprint 漂亮打印一个变量。用于调试
#}
## safe
##-------------------------------------------------------------------------------
{{ "it's good" }} ## it's good
{{ "it's good" | safe }} ## it's good
## join
##-------------------------------------------------------------------------------
{{ [ 1, 3, 'a'] | join }} ## 13a
{{ [ 1, 3, 'a'] | join(",") }} ## 1,3,a
{{ users|join(', ', attribute='name') }} ## hoojo, hoojo
## 获取属性值
##-------------------------------------------------------------------------------
{{ user | attr('name') }}
{{ user | attr('age') }}
{{ user | attr('__flag') }} ## 私有变量无法访问
## center
##-------------------------------------------------------------------------------
__{{ 'hello' | center(88) }}__
__{{ 'hello jack' | center(20) }}__
## batch, 不足3个会用空格填充
##-------------------------------------------------------------------------------
{%- for row in [1, 2]|batch(3, ' ') %}
row: {{ row | safe }}
{%- endfor %}
## 默认值
##-------------------------------------------------------------------------------
{{ my_variable | default('my_variable is not defined') }}
{{ '' | default('the string was empty, 中文', true) }}
## 使用别名, true 忽略空字符串
{{ '' | d('empty', true) }}
## dict 排序:dictsort(value, case_sensitive=False, by='key', reverse=False)
##-------------------------------------------------------------------------------
{% set mydict = {'b': 12, 'a': 232, 'd': 22, 'C': 15} %}
## 按键排序,不区分大小写
{% for item in mydict|dictsort %}
item: {{ item | safe }}
{% endfor %}
## 按键,不区分大小写,反向顺序对字典进行排序
{% for item in mydict|dictsort(reverse=true) %}
item: {{ item | safe }}
{% endfor %}
## 按键排序,区分大小写
{% for item in mydict|dictsort(true) %}
item: {{ item | safe }}
{% endfor %}
## 按值排序dict,不区分大小写
{% for item in mydict|dictsort(false, 'value') %}
item: {{ item | safe }}
{% endfor %}
## group 对象分组
##-------------------------------------------------------------------------------
{% set list = [{'b': 12, 'a': 232, 'd': 22, 'C': 15}, {'a': 1, 'b': '2'}, {'a': 3, 'c': '2'}] %}
{% for group in list | groupby('a') %}
--> key: {{ group.grouper | safe }}, list: {{ group.list | safe }}
{% endfor %}
## output
##--> (1, [{'a': 1, 'b': '2'}])
##--> (3, [{'a': 3, 'c': '2'}])
##--> (232, [{'b': 12, 'a': 232, 'd': 22, 'C': 15}])
##--> key: 1, list: [{'a': 1, 'b': '2'}]
##--> key: 3, list: [{'a': 3, 'c': '2'}]
##--> key: 232, list: [{'b': 12, 'a': 232, 'd': 22, 'C': 15}]
## 字符串副本,并格式化缩进:indent(s, width=4, first=False, blank=False, indentfirst=None)
##------------------------------------------------------------------------------------
{% filter indent %}
Return a copy of the
string with each line indented by 4 spaces.
The first line and blank lines are not indented by default.
{% endfilter %}
## map 过滤数据,相当于 if 判断过滤
##------------------------------------------------------------------------------------
{{ users | map(attribute='name') | join(', ') }} ## 提取 name ,并 join 拼接
{{ 'Hello World'| map('upper') | join(', ') }} ## 将字符(集合)转换大写
{{ [1, 2, 3, 4] | reject("odd") | safe}}
{{ users | rejectattr("name") }}
{{ users | rejectattr("name", "none") }}
## slice 将集合分3等份
##------------------------------------------------------------------------------------
{% set items = [ 1, 2, 3, 4, 5, 6 ] %}
{%- for column in items | slice(3) %}
-> {{ column }}
{%- endfor %}
## output
##-> [1, 2, 3]-> [4, 5]-> [6, 7]
## 不足就 -1 填充
{% set items = [ 1, 2, 3, 4, 5, 6, 7 ] %}
{%- for column in items | slice(3, -1) %}
-> {{ column }}
{%- endfor %}
## output
## -> [1, 2, 3]-> [4, 5, -1]-> [6, 7, -1]
## sort 排序
##------------------------------------------------------------------------------------
{% for item in mydict | sort %}
{{ item }}
{% endfor %}
{% for item in list | sort(attribute='a') %}
{{ item | safe }}
{% endfor %}
## sum 求和
##------------------------------------------------------------------------------------
Total: {{ list | sum(attribute='a') }}
## tojson
##------------------------------------------------------------------------------------
{{ list | tojson }} ## [{"C": 15, "a": 232, "b": 12, "d": 22}, {"a": 1, "b": "2"}, {"a": 3, "c": "2"}]
## 转换属性
##------------------------------------------------------------------------------------
{{ mydict | xmlattr }} ## b="12" a="232" d="22" C="15"
## truncate 截断字符串,超出长度 省略号 填充
##------------------------------------------------------------------------------------
{{ "foo bar baz qux"|truncate(9) }}
##-> "foo..."
{{ "foo bar baz qux"|truncate(9, True) }}
##-> "foo ba..."
{{ "foo bar baz qux"|truncate(11) }}
##-> "foo bar baz qux"
{{ "foo bar baz qux"|truncate(11, False, '...', 0) }}
##-> "foo bar..."
## 使用自定义过滤器
##------------------------------------------------------------------------------------
written on: {{ pub_date | datetimeformat }}
## -> written on: 11:20 / 12-09-2018
publication date: {{ pub_date | datetimeformat('%d-%m-%Y') }}
## -> publication date: 12-09-2018