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 相关文章推荐
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
使用Python进行目录的对比方法
Nov 01 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
python如何实现视频转代码视频
Jun 17 Python
Python无头爬虫下载文件的实现
Apr 02 Python
keras导入weights方式
Jun 12 Python
从python读取sql的实例方法
Jul 21 Python
通过实例简单了解python yield使用方法
Aug 06 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
php事件驱动化设计详解
2016/11/10 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
jquery中获取select选中值的代码
2011/06/27 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
Node 代理访问的实现
2019/09/19 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
python strip()函数 介绍
2013/05/24 Python
python字符串替换示例
2014/04/24 Python
python实现简单温度转换的方法
2015/03/13 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
行政助理的职责
2013/11/14 职场文书
户外宣传策划方案
2014/05/25 职场文书
贪污检举信范文
2015/03/02 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python