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的设计模式编程入门指南
Apr 02 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
python实现批量下载新浪博客的方法
Jun 15 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
python中 * 的用法详解
Jul 10 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
python路径的写法及目录的获取方式
Dec 26 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 07 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python matplotlib 利用随机函数生成变化图形
Apr 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
ip签名探针
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
js arguments对象应用介绍
2012/11/28 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
vue组件学习教程
2017/09/09 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
深入浅析Python传值与传址
2018/07/10 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
数据库基础的一些面试题
2012/02/25 面试题
网上签名寄语活动留言
2014/01/18 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python