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实现Const详解
Jan 27 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python中的常量和变量代码详解
Jul 25 Python
python反编译学习之字节码详解
May 19 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
pytorch标签转onehot形式实例
Jan 02 Python
python如何导入依赖包
Jul 13 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
如何利用python 读取配置文件
Jan 06 Python
python+opencv实现车道线检测
Feb 19 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 数组基本操作方法详解
2016/06/17 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
thinkphp分页集成实例
2017/07/24 PHP
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
js使用心得分享
2015/01/13 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
用Eclipse写python程序
2018/02/10 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
对python中各个response的使用说明
2020/03/28 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
python和php哪个容易学
2020/06/19 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
美国翻新电子产品商店:The Store
2019/10/08 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
GWT都有什么特性
2016/12/02 面试题
银行演讲稿范文
2014/01/03 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
好人好事新闻稿
2015/07/17 职场文书
小学教代会开幕词
2016/03/04 职场文书