内置的过滤器
Nunjucks已经实现了jinja中的大部分过滤器,同时也新增了一些属于自己的过滤器。我们需要为这些过滤器编写文档。下面是一部分过滤器的文档,其他的你可以点击链接查看jinja上的文档。
default(value, default, [boolean])
(简写为 d
)
如果value
全等于undefined
则返回default
,否则返回value
。如果boolean
为true,则会在value
为JavaScript中的假值时(比如:false, ""等)返回default
。
在2.0版本中,这个过滤器的默认表现与以前有所不同。在之前的版本中,它会把boolean
的默认值 设置为true,所以传入任何假值都会返回default
。在2.0中,默认只有值为undefined
时会 返回default
。如果你仍旧希望保持原来版本的表现的话,你可以给boolean
传入true
,或是 直接使用value or default
。
sort(arr, reverse, caseSens, attr)
用JavaScript中的arr.sort
函数排序arr
。如果reverse
为true,则会返回相反的排序结果。默认状态下排序不会区分大小写,但你可以将caseSens
设置为true来让排序区分大小写。我们可以用attr
来指定要比较的属性。
striptags (value, [preserve_linebreaks])
类似于jinja中的striptags.如果preserve_linebreaks
为false(同时也是默认值),则会移去SGML/XML标签并用一个空格符替换临近的、连续的空白符号。如果preserve_linebreaks
为true,则会尝试保留临近的空白符号。如果你希望使用管道操作符进行类似于{{ text | striptags | nl2br }}
这样的操作时,你就会需要用到后一种。否则你还是应该使用默认的用法。
dump (object)
在一个对象上调用JSON.stringify
,并将结果输出到模板上。这在调试时很有用:{{ foo | dump }}
。
其他过滤器
- abs
- batch
- capitalize
- center
- dictsort
- escape (简写为
e
) - float
- first
- groupby
- indent
- int
- join
- last
- length
- list
- lower
- random
- rejectattr (只接受单个参数)
- replace (第一个参数也可以接受JavaScript中的正则表达式)
- reverse
- round
- safe
- selectattr (只接受单个参数)
- slice
- string
- sum
- title
- trim
- truncate
- upper
- urlencode
- urlize
- wordcount
你也可以直接看代码。