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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
简单的通用表达式求10乘阶示例
Mar 03 Python
解析Python中的二进制位运算符
May 13 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
Python3.5文件修改操作实例分析
May 01 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
Python 如何查找特定类型文件
Aug 17 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
综合图片计数器
2006/10/09 PHP
加强版phplib的DB类
2008/03/31 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP会话控制实例分析
2016/12/24 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
JavaScript prototype属性深入介绍
2012/11/27 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
任意存:BOXFUL
2018/05/21 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
体育系毕业生求职自荐信
2014/04/16 职场文书
热门专业求职信
2014/05/24 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
解除处分决定书
2015/06/25 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Python标准库之typing的用法(类型标注)
2021/06/02 Python