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代码做configure文件
Jul 20 Python
Python函数式编程指南(一):函数式编程概述
Jun 24 Python
python中for用来遍历range函数的方法
Jun 08 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
python实现大转盘抽奖效果
Jan 22 Python
在Python文件中指定Python解释器的方法
Feb 18 Python
Django--权限Permissions的例子
Aug 28 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
django 实现简单的插入视频
Apr 07 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
keras的三种模型实现与区别说明
Jul 03 Python
python 发送邮件的四种方法汇总
Dec 02 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
深入了解php4(1)--回到未来
2006/10/09 PHP
php实现删除空目录的方法
2015/03/16 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
javascript调试说明
2010/06/07 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
微信小程序如何获取用户收货地址
2018/11/27 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python的mysqldb安装步骤详解
2017/08/14 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
高中生的自我评价
2014/03/04 职场文书
主持词开场白
2014/03/17 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
劳动模范获奖感言
2015/07/31 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers