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 相关文章推荐
在Django中同时使用多个配置文件的方法
Jul 22 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python语音识别实践之百度语音API
Aug 30 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
python retrying模块的使用方法详解
Sep 25 Python
Python数据持久化存储实现方法分析
Dec 21 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
解决python运行启动报错问题
Jun 01 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
PDO::commit讲解
2019/01/27 PHP
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
Python实现把xml或xsl转换为html格式
2015/04/08 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
python实现人民币大写转换
2018/06/20 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
Python正则表达式指南 推荐
2018/10/09 Python
基于python生成器封装的协程类
2019/03/20 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
自荐信格式模板
2015/03/27 职场文书
撤诉状格式范本
2015/05/19 职场文书
高三物理教学反思
2016/02/20 职场文书
手写实现JS中的new
2021/11/07 Javascript