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 def函数的定义、使用及参数传递实现代码
Aug 10 Python
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
python中引用与复制用法实例分析
Jun 04 Python
Python字符串格式化
Jun 15 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
用python爬虫批量下载pdf的实现
Dec 01 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
php5 mysql分页实例代码
2008/04/10 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
python实现bucket排序算法实例分析
2015/05/04 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
详解python中asyncio模块
2018/03/03 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js