zoukankan      html  css  js  c++  java
  • flask 模板过滤器及自定义模板过滤器

    内置的模板过滤器:

    过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,这就用到了过滤器。
    过滤器的使用方式为:变量名 | 过滤器。 过滤器名写在变量名后面,中间用 | 分隔。


    1.字符串过滤器:
    <!--safe :禁用html转义-->
    {{'<em>html</em>'|safe}}        ==========>   html
    <br/>
    {{'<b>我是0加粗的字体</b>'|safe}}==============>我是0加粗的字体
    <br/>
    <!--capitalize:将第一个单词的首字母大写,其余都是小写-->
    {{'we help each other'|capitalize}}==================>We help each other
    <br/>
    <!--title:将每一个单词的首字母都大写-->
    {{'we help each other'|title}}===================>We Help Each Other
    <br/>
    <!--lower:将所有字符串的大写转换成小写,非字母保持不变-->
    {{'HELLo'|lower}}==========================>hello
    <br>
    <!--upper:将所有字符串的小写转换成大写,非字母保持不变-->
    {{'he,llo'|upper}}==========================>HE,LLO
    <br>
    <!--trim:去除左右两边的空格,不会转义&nbsp;-->
    {{'            l ov  e   '|trim}}==================>l ov e
    
    <br>{{'            l&nbsp;&nbsp;&nbsp;&nbsp; ov  e   '|trim}}==========l&nbsp;&nbsp;&nbsp;&nbsp; ov e
    <br>
    <!--reverse:将单词中每个字符进行反转-->
    {{'hello'|reverse}}=================>olleh
    <br>
    <!--format:格式化输出-->
    {{'%s今年%d岁了'|format('小丽',20)}}============>小丽今年20岁了
    <br>
    <!--striptags:将字符串中所有的html标记全部删除(不管是否禁用html转义都能直接删除)-->
    {{'<font color="red">红色字</font>'|safe|striptags}}===========》红色字
    <br>
    过滤器是支持链式操作的(没有级联关系,就是根据写入的顺序依次执行):
    {{'hello erveryone'|upper|lower|title|reverse}}===============》enoyrevrE olleH


    2.列表过滤器:

    1. first:取列表中的第一个元素
    {{[1,2,3,4,5]|first}}========>1
      2. last:取列表中最后一个元素
    {{[1,2,3,4,5]|last}}=========>5

      3.length:去列表中列表的长度
    {{[1,2,3,4,5]|length}}=====>5

        4.sum:对列表中元素进行求和

    {{[1,2,3,4,5]|sum}}=========>15

      5.sort:对列表元素进行升序

    sort:对列表元素进行升序====>[1, 2, 3, 4, 5]

      6.sort(reverse=true):对列表元素进行降序

    {{[1,2,3,4,5]|sort(reverse=true)}}=======>[5, 4, 3, 2, 1]

      7.join:对列表元素进行拼接

    {{['a',1,'b',2,'c','d']|join('.')}}=======>a.1.b.2.c.d
    自定义模板过滤器:

    过滤器的本质是函数。当模板内置的过滤器不能满足需求,可以自定义过滤器。自定义过滤器有两种实现方式:一种是通过Flask应用对象的add_template_filter方法。还可以通过装饰器来实现自定义过滤器。


    1.通过调用应用程序实例的add_template_filter方法实现自定义过滤器。该方法第一个参数是函数名,第二个参数是自定义的过滤器名称。

    def filter_template(list):
        return list[::2]
    app.add_template_filter(filter_template,'my_filter')

    2.实现方式二:用装饰器来实现自定义过滤器。装饰器传入的参数是自定义的过滤器名称。

    @app.template_filter('my_filter')
    def filter_double_sort(list):
        return list[::2]

    定义后的过滤器直接在模板文件里使用即可,

    {{"1,2,a5:6,8"|my_filter}}========》12a:,






  • 相关阅读:
    【bzoj1010】[HNOI2008]玩具装箱toy
    bzoj 3173
    bzoj 1179
    bzoj 2427
    bzoj 1051
    bzoj 1877
    bzoj 1066
    bzoj 2127
    bzoj 1412
    bzoj 3438
  • 原文地址:https://www.cnblogs.com/nihao2/p/14009592.html
Copyright © 2011-2022 走看看