###jinja2模板过滤器
过滤器是通过管道符号’|‘进行使用的,例如 {{ name|length }} ,
将返回name的长度,过滤器相当于一个函数,把当前变量传入到过滤
器中,然后过滤器根据自己的功能,返回相应的值,之后再将结果渲染
到页面中。
####基本用法:
{{变量|过滤器名}}####常用过滤器:
default过滤器
使用方式: {{ value|default('默认值') }} ,如果value这个key不存在,那么就会使用default过滤器提供的默认值。如果你想判断一个值是否为False(例如:None、空字符串、空列表、空字典),那么就必须传递另外一个参数 {{ value|default('默认值',boolean=True) }} 可以使用‘or’来替代default 例如 {{signature or ‘no signature’}} 。
####自动转义过滤器:
’safe‘过滤器:可以关闭一个字符串的自动转义。
‘escape’过滤器:对某一改字符串进行转义。
’autoescape‘标签,可以对他里面的代码块关闭或开启自动转义。
1 | {% autoescape off %} {#使用闭合标签关闭自动转义,off关闭,on开启#} |
等等还有很多常用过滤器,请自行查阅。
####自定义过滤器:
过滤器本质上是一个函数。如果在模板中调用这个过滤器,就会将这个变量的值作为第一个参数传给过滤器函数,然后过滤器函数返回过滤后的值,需要使用到一个装饰器,@app.template_filter(‘自定义过滤器名’)。
1 |
|
1 | {{ article|my_cut }} |
#####自定义时间处理过滤器:
1 | create_time = datetime(2019, 1, 9, 15, 11, 0) # 发表时间 |
1 | <p>{{ create_time|handle_time }} </p> |
###宏
宏类似于Python中的函数,我们在宏中定义行为,还可以进行传递参数,就像Python中的函数一样一样儿的。
在宏中定义一个宏的关键字是macro,后面跟其 宏的名称和参数等
1 | {% macro input(name,age=18) %} # 参数age的默认值为18 |
调用方法也和Python的类似
1 | <p>{{ input('daxin') }} </p> |