flask中过滤器的使用详解


Posted in Python onAugust 01, 2018

过滤器

过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。

使用方式:

过滤器的使用方式为:变量名 | 过滤器。

{{variable | filter_name(*args)}}

如果没有任何参数传给过滤器,则可以把括号省略掉, flask中过滤器支持链式调用

{{variable | filter_name}}

常见内建过滤器

字符串操作

  • 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>
  • reverse:字符串反转      <p>{{ 'olleh' | reverse }}</p>
  • format:格式化输出        <p>{{ '%s is %d' | format('name',17) }}</p>
  • striptags:渲染之前把值中所有的HTML标签都删掉       <p>{{ '<em>hello</em>' | striptags }}</p>
  • truncate: 字符串截断           <p>{{ 'hello every one' | truncate(9)}}</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>

自定义过滤器

过滤器的本质是函数。当模板内置的过滤器不能满足需求,可以自定义过滤器。自定义过滤器有两种实现方式:

  • 一种是通过Flask应用对象的 add_template_filter 方法
  • 通过装饰器来实现自定义过滤器

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

需求:添加列表反转的过滤器

方式一

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

def do_listreverse(li):
  # 通过原列表创建一个新列表
  temp_li = list(li)
  # 将新列表进行返转
  temp_li.reverse()
  return temp_li

app.add_template_filter(do_listreverse,'lireverse')

方式二

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

@app.template_filter('lireverse')
def do_listreverse(li):
  # 通过原列表创建一个新列表
  temp_li = list(li)
  # 将新列表进行返转
  temp_li.reverse()
  return temp_li

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python文件和目录操作方法大全(含实例)
Mar 12 Python
Python深入学习之装饰器
Aug 31 Python
Python读写文件方法总结
Jun 09 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
从django的中间件直接返回请求的方法
May 30 Python
python中cPickle类使用方法详解
Aug 27 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
python递归下载文件夹下所有文件
Aug 31 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
Python拼接微信好友头像大图的实现方法
Aug 01 #Python
Python Flask前后端Ajax交互的方法示例
Jul 31 #Python
Python常见内置高效率函数用法示例
Jul 31 #Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 #Python
flask-socketio实现WebSocket的方法
Jul 31 #Python
深入flask之异步非堵塞实现代码示例
Jul 31 #Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 #Python
You might like
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
python中lambda()的用法
2017/11/16 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
python3 字符串知识点学习笔记
2020/02/08 Python
python批量修改xml属性的实现方式
2020/03/05 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
主持词开场白
2014/03/17 职场文书
青年志愿者活动总结
2014/04/26 职场文书
个人承诺书怎么写
2014/05/24 职场文书
销售代理协议书
2014/09/30 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
汶川大地震感悟
2015/08/10 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js