flask中过滤器的使用详解
作者:skaarl 发布时间:2023-03-01 16:00:55
过滤器
过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 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
来源:http://www.cnblogs.com/skaarl/p/9397426.html


猜你喜欢
- 目录一、列表求并集1. union_by二、列表求交集1. intersection_by三、列表求差集1. difference2. di
- 1、pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echar
- 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多。修复bug什么的,测试,提交版本库(2分钟),ss
- 通用用法但上图的字段名,类型需要根据不同接口填写,如某服务接口:因而对应的上传代码如下:# 输出参数:请求响应报文import reques
- 前言python使用中多线程、多进程、多协程使用是比较常见的。那么如果在多线程等的使用,我们这个时候我们想从外部强制杀掉该线程请问如何操作?
- 本文实例讲述了C#使用checkedListBox1控件链接数据库的方法。分享给大家供大家参考,具体如下:在数据库中创建三个表: 学生信息表
- 好久没有写ASP代码了,今天在做一个简单的留言本时,出现了一下错误:Microsoft Office Access Database Eng
- 一、CSRF:保护机制Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csr
- 通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了。 当然,不能仅凭用户的一面之词,
- 本文实例讲述了Go语言基础知识。分享给大家供大家参考,具体如下:GO文件目录结构该图是go-windows的目录结构如图,go的程序应该是在
- 本文通过实例解析了 SQL Server 数据库扩展存储过程,实现远程备份与恢复的方法和步骤实例说明: 环境:win2k+sqlserver
- 本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL
- 当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpReque
- 本文实例讲述了原生javascript运动函数的封装。分享给大家供大家参考,具体如下://封装匀速运动//参数:// 1、dom对象// 2
- 一、准备工作安装最新的Go1、由于Google被墙的原因,如果没有VPN的话,就到这里下载:http://www.golangtc.com/
- 最近准备复现一下 KDD-20 Towards Deeper Graph Neural Networks 的代码,顺便学习一下 GCN 最新
- 最长公共子序列python实现,最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。1.找出最优解的性质,并刻划其结构特征序列
- 【代码示例】 [code=SQL] DELIMITER $$ DROP FU
- 一 前言前文 介绍了5.5/5.6 版本的MySQL semi sync 基础原理和配置,随着MySQL 5.7 的发布,新版本的MySQL
- 在网页设计初期,我们会先收集大家对设计方向的期许,我们经常收集到这样的建议:产品经理:要易用,要简洁设计总监:要特色,要亮点部门经理:要大气