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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
基于python实现从尾到头打印链表
Nov 02 Python
django中media媒体路径设置的步骤
Nov 15 Python
Django的CVB实例详解
Feb 10 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
Python爬虫制作翻译程序的示例代码
Feb 22 Python
Python字典的基础操作
Nov 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
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python复制文件操作实例详解
2015/11/10 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python解决八皇后问题示例
2018/04/22 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
C语言面试题
2013/05/19 面试题
毕业生写求职信的要点
2014/03/04 职场文书
毕业生就业意向书
2014/04/01 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
2016教师国培研修感言
2015/12/08 职场文书
golang 语言中错误处理机制
2021/08/30 Golang