组团学

模板过滤器

阅读 (178710)

一、概述

过滤器是通过管道符号(|)进行使用的,例如:{{ name|length }},将返回name的长度。过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中

二、内置过滤器

  • abs(value):返回一个数值的绝对值。

    示例:{{-1|abs}}

  • default(value,default_value,boolean=false)如果当前变量没有值,则会使用参数中的值来代替

    示例:name|default('lucky') 如果name不存在,则会使用xiaotuo来替代

    boolean=False默认是在只有这个变量为undefined的时候才会使用default中的值,如果想使用python的形式判断是否为false,则可以传递boolean=true

    return render_template('index.html',var=False) {{var|default('lucky')}} # 显示为 False 因为只有值为undefined才会执行lucky {{var|default('a',boolean=True)}} #此刻为 lucky
  • escape(value)或e 转义字符,会将<>等符号转义成HTML中的符号

    示例:content|escapecontent|e

  • first(value) 返回一个序列的第一个元素

    示例:names|first

  • last(value) 返回一个序列的最后一个元素

    示例:names|last

  • format(value,*arags,**kwargs) 格式化字符串

    示例:

    {{'我叫:%s 我今年%d岁了 我的存款是 %.2f 元'|format('lucky', 18, 12.5)}}
  • length(value) 返回一个序列或者字典的长度

    示例:names|length

  • join(value,d=u'') 将一个序列用d这个参数的值拼接成字符串

    {{['1','2']|join('-')}}
  • safe(value) 如果开启了全局转义,那么safe过滤器会将变量关掉转义

    示例:content_html|safe

  • int(value):将值转换为int类型

  • float(value):将值转换为float类型

  • string(value) 将变量转换成字符串

  • list(value) 将变量转换成列表

  • lower(value):将字符串转换为小写

  • upper(value):将字符串转换为小写

  • replace(value,old,new): 替换将old替换为new的字符串

  • truncate(value,length=255,killwords=False) 截取length长度的字符串

  • striptags(value) 删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格

  • trim 截取字符串前面和后面的空白字符

  • wordcount(s) 计算一个长字符串中单词的个数

注意

使用’|'将变量与函数分开,左边是变量名,右边是函数名

三、自定义过滤器

  • 方式一

    通过Flask应用对象的add_template_filter方法

    # 写一个实现 字符超出5个 显示... def show_ellipsis(Str,length=5): if(len(Str))>length: Str = Str[0:length]+'...' return Str # 可以给过滤器器一个名字,如果没有,默认就是函数的名字 app.add_template_filter(show_ellipsis,'show_ellipsis')
  • 方式二

    通过装饰器来实现自定义过滤器

    # 如果不传入参数,默认过滤器名字就是函数的名字 @app.template_filter() def show_ellipsis(Str,length=5): if(len(Str))>length: Str = Str[0:length]+'...' return Str
需要 登录 才可以提问哦