zoukankan      html  css  js  c++  java
  • Flask之模板过滤器

    3.2 过滤器:

    过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,这就用到了过滤器。 过滤器的使用方式为:变量名 | 过滤器。 过滤器名写在变量名后面,中间用 | 分隔。如:{{variable | capitalize}},这个过滤器的作用:把变量variable的值的首字母转换为大写,其他字母转换为小写。 其他常用过滤器如下:

    字符串操作:

    safe:禁用转义;

      <p>{{ '<em>hello</em>' | safe }}</p>

    capitalize:把变量值的首字母转成大写,其余字母转小写;

      <p>{{ 'hello' | capitalize }}</p>

    lower:把值转成小写;

      <p>{{ 'HELLO' | lower }}</p>

    upper:把值转成大写;

      <p>{{ 'hello' | upper }}</p>

    title:把值中的每个单词的首字母都转成大写;

      <p>{{ 'hello' | title }}</p>

    trim:把值的首尾空格去掉;

      <p>{{ ' hello world ' | trim }}</p>

    reverse:字符串反转;

      <p>{{ 'olleh' | reverse }}</p>

    format:格式化输出;

      <p>{{ '%s is %d' | format('name',17) }}</p>

    striptags:渲染之前把值中所有的HTML标签都删掉;

      <p>{{ '<em>hello</em>' | striptags }}</p>

    列表操作

    first:取第一个元素

      <p>{{ [1,2,3,4,5,6] | first }}</p>

    last:取最后一个元素

      <p>{{ [1,2,3,4,5,6] | last }}</p>

    length:获取列表长度

      <p>{{ [1,2,3,4,5,6] | length }}</p>

    sum:列表求和

      <p>{{ [1,2,3,4,5,6] | sum }}</p>

    sort:列表排序

      <p>{{ [6,2,3,1,5,4] | sort }}</p>

    语句块过滤(不常用):

      {% filter upper %}
        this is a Flask Jinja2 introduction
      {% endfilter %}

    自定义过滤器:

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

    自定义的过滤器名称如果和内置的过滤器重名,会覆盖内置的过滤器。

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

    def filter_double_sort(ls):
        return ls[::2]
    app.add_template_filter(filter_double_sort,'double_2')

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

    @app.template_filter('db3')
    def filter_double_sort(ls):
        return ls[::-3]


  • 相关阅读:
    PCB Genesis加邮票孔(线与线)实现算法
    PCB 无需解压,直接读取Zip压缩包指定文件 实现方法
    PCB MS SQL CLR聚合函数(函数作用,调用顺序,调用次数) CLR说明
    PCB MS SQL表值函数与CLR 表值函数 (例:字符串分割转表)
    PCB MS CLR 聚合函数 joinString加排序实现
    PCB 奥宝LDI 输出自动改周期检测内容
    如何介绍项目
    二叉树的深度
    51单片机汇编指令手册
    SSM父子工程搭建
  • 原文地址:https://www.cnblogs.com/alexzhang92/p/9545551.html
Copyright © 2011-2022 走看看