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字典简介以及用法详解
Nov 15 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
python解析含有重复key的json方法
Jan 22 Python
Python中正则表达式的用法总结
Feb 22 Python
Python 函数返回值的示例代码
Mar 11 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
解决python tkinter界面卡死的问题
Jul 17 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
pytorch--之halfTensor的使用详解
May 24 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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
初探PHP5
2006/10/09 PHP
php自动适应范围的分页代码
2008/08/05 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Python编程之序列操作实例详解
2017/07/22 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
python机器学习实战之K均值聚类
2017/12/20 Python
如何在python中写hive脚本
2019/11/08 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python的列表List求均值和中位数实例
2020/03/03 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
销售找工作求职信
2013/12/20 职场文书
魅力教师事迹材料
2014/01/10 职场文书
大学校庆邀请函
2014/01/11 职场文书
安全生产宣传标语
2014/06/06 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
2014财务部年度工作总结
2014/12/08 职场文书