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中处理列表之reverse()方法的使用教程
May 21 Python
Python使用getpass库读取密码的示例
Oct 10 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
pytorch之ImageFolder使用详解
Jan 06 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
初识Javascript小结
2015/07/16 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python实现BackPropagation算法
2017/12/14 Python
python3学生名片管理v2.0版
2018/11/29 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
会计专业毕业生求职信分享
2014/01/03 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
给孩子的新年寄语
2014/04/08 职场文书
加薪申请报告范本
2015/05/15 职场文书
地心历险记观后感
2015/06/15 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
运动会100米广播稿
2015/08/19 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers
Mysql数据库group by原理详解
2022/07/07 MySQL