阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

模板过滤器

126次阅读
没有评论

共计 1612 个字符,预计需要花费 5 分钟才能阅读完成。

一、概述

过滤器是通过管道符号(|)进行使用的,例如:{{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

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-05-26发表,共计1612字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中