Jinja2自定义过滤器

Jinja2本身自带许多过滤器,但是有些功能实现需要自己设计特定的过滤器,我熟悉的有两种实现的方法,这里记录经常使用的一种方法。

以难度判断记录下,通过判断1-5,返回不同的难度等级

过滤函数:

1
def Num2Nandu(num):
2
    if not isinstance(num, int):
3
        return '暂无'
4
    if num == 1:
5
        return '入门'
6
    elif num == 2:
7
        return '初级'
8
    elif  2<num<=4:
9
        return '中级'
10
    elif num == 5:
11
        return '高级'
12
    else:
13
        return '暂无'

将过滤函数添加到模板过滤器中

1
bp.add_app_template_filter(Num2Nandu, 'Num2Nandu')  #过滤数字-难度,第二个参数为过滤器的名字

前端使用自定义的过滤器

1
<span class="Ori-pic">{{ vul.stars|Num2Nandu }}</span>  <!--传入int进行过滤--->