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基础教程之获取本机ip数据包示例
Feb 10 Python
Python深入学习之特殊方法与多范式
Aug 31 Python
跟老齐学Python之玩转字符串(3)
Sep 14 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python如何发布程序的详细教程
Oct 09 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
python实现高斯判别分析算法的例子
Dec 09 Python
python识别验证码的思路及解决方案
Sep 13 Python
Python代码风格与编程习惯重要吗?
Jun 03 Python
python playwright之元素定位示例详解
Jul 23 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作的文本留言本的例子(五)
2006/10/09 PHP
php经典算法集锦
2015/11/14 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
js实现聊天对话框
2020/02/08 Javascript
Numpy array数据的增、删、改、查实例
2018/06/04 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python作用域与名字空间原理详解
2020/03/21 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
如何用python写个模板引擎
2021/01/14 Python
String是最基本的数据类型吗?
2013/06/13 面试题
某公司部分笔试题
2013/11/05 面试题
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
五好关工委申报材料
2014/05/31 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
好媳妇事迹材料
2014/12/24 职场文书
十月围城观后感
2015/06/08 职场文书
酒店开业主持词
2015/07/02 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
Python jiaba库的使用详解
2021/11/23 Python
docker 制作mysql镜像并自动安装
2022/05/20 Servers
Nginx如何配置根据路径转发详解
2022/07/23 Servers