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继承和抽象类的实现方法
Jan 14 Python
json跨域调用python的方法详解
Jan 11 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
flask框架视图函数用法示例
Jul 19 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
总结几个非常实用的Python库
Jun 26 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php模板函数 正则实现代码
2012/10/15 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python实现线程池的方法
2015/06/30 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
python 如何实现遗传算法
2020/09/22 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
js实现弹框效果
2021/03/24 Javascript
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
安全温馨提示语大全
2015/07/14 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript