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操作ssh实现服务器日志下载的方法
Jun 03 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
python使用psutil模块获取系统状态
Aug 27 Python
Python语言描述最大连续子序列和
Dec 05 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
详解django中使用定时任务的方法
Sep 27 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 Python
Python函数调用追踪实现代码
Nov 27 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
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
JS交换变量的方法
2015/01/21 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
原生js实现购物车
2020/09/23 Javascript
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
美国家居装饰店:Pier 1
2019/09/04 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
心得体会开头
2014/01/01 职场文书
媒体宣传策划方案
2014/05/25 职场文书
2015年妇女工作总结
2015/05/14 职场文书
Python 内置函数速查表一览
2021/06/02 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers