Flask学习笔记之:jinja2变量过滤器以及自定义过滤器
Flask学习笔记之:jinja2变量过滤器以及自定义过滤器
- 何为变量过滤器
- 变量过滤器的使用方式
- jinja2内置的变量过滤器
- 自定义变量过滤器
何为变量过滤器
网上解释:
Django和Flask框架中都使用了jinja2模板引擎来渲染模板,通过后端向模板中传递变量,通过过滤器可以修改这些变量,过滤器添加在变量名之后,中间使用竖线分割。
我的理解:
变量过滤器其实就是执行一个函数,把变量传入函数,把函数的返回值填充到这个位置。
变量过滤器的使用方式
(注意,既然我把变量过滤器看作一个函数,这里我对参数个数的解释就与网上的有些出入,这样解释是为了方便我们自己写过滤器,不要揪着到底算是没有参数还是有一个参数不放,明白我的意思就好了)
使用方式为:变量名 | 过滤器。
{{variable | filter_name(*args)}}
这个variable实际上作为 filter_name函数的第一个参数传入,第二和其它参数从*args中传入。
如果只有一个参数传给过滤器,则可以把括号省略掉
{{variable | filter_name}}
jinja2内置的变量过滤器
常见内建过滤器:
例子:
小写转为大写
<p>{{ 'hello' | upper }}</p>
字符串操作:
safe:禁用转义
capitalize:把变量值的首字母转成大写,其余字母转小写
lower:把值转成小写
upper:把值转成大写
title:把值中的每个单词的首字母都转成大写
reverse:字符串反转
format:格式化输出
striptags:渲染之前把值中所有的HTML标签都删掉
truncate: 字符串截断
列表操作:
first:取第一个元素
last:取最后一个元素
length:获取列表长度
sum:列表求和
sort:列表排序
整块操作
{% filter upper %}balabalabalabala
{% endfilter %}
支持链式调用
在 jinja2 中,过滤器是可以支持链式调用的,示例如下:
{{ "hey, man!" | reverse | upper }}
自定义变量过滤器
尽管jinja2提供了丰富的内置过滤器,但是有些时候还是没办法满足我们的需求。
好在jinja2支持自定义过滤器,我们来写一个:
后端:
def stamp2time(stamp):sec_count=int(time.time()-float(stamp))if(sec_count<=25):return "在线"+"("+ str(sec_count) +"秒前更新)"elif(stamp!="0"):minite_count=int(sec_count/60)hour_count=int((sec_count/3600)%24)day_count=int((sec_count/3600)/24)tmp_str=' 'if(day_count>0):tmp_str=str(day_count)+"天"elif(hour_count>0):tmp_str=str(hour_count)+"小时"elif(minite_count>0):tmp_str=str(minite_count)+"分钟"else:tmp_str=str(sec_count)+"秒"return "离线"+"("+tmp_str+"前更新)"else:return "从未上线"#下面两行不要忘记加入!
env = app.jinja_env#取得运行环境
env.filters['stamp2time'] = stamp2time#注册自定义过滤器
前端:
<td>{{u.time|stamp2time}}</td>
其中:u.time传入了数据库中存储的最近一次更新时间的时间戳,经过stamp2time转化后变成了我们需要的文本。
可以看到,过滤器其实就是一个函数,自带的过滤器的函数已经帮我们写好了,自定义变量过滤器的函数我们自己写就好了,就这么简单!
————————————————————————————————————————
END
欢迎大家关注,点赞,收藏哦,您的支持是我加速更新和为您写出更好文章的动力!
Flask学习笔记之:jinja2变量过滤器以及自定义过滤器相关推荐
- 千锋Flask学习笔记
千锋Flask学习笔记 文章目录 千锋Flask学习笔记 写在前面 1. Flask介绍 2. Views 3. Request 4. Response 5. 会话技术 6. 模型和模板 7. 数据传 ...
- Flask学习笔记(四): Flask与数据库连接
Flask学习笔记(四): Flask与数据库连接 前言 前面我们学习了Flask如何构建一个程序的流程,又研究了它的路由如何设定,还对如何获取模板表单数据进行了梳理,值得一提的就是Flask和SQL ...
- TypeScript学习笔记1:变量赋值及书写方式
TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 变量赋值 ...
- 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...
- 吴恩达《机器学习》学习笔记二——单变量线性回归
吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...
- ES6学习笔记03:变量的解构赋值
ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...
- Flask学习笔记总结(一)
Flask学习笔记总结(一) 说明:开始在csdn上面记录一些关于自己学习技术的笔记总结. 文章目录 Flask学习笔记总结(一) 前言 一.python的web三大框架 二.flask入门 1.ws ...
- Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)
模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染: render_template("模板名字",键=值,键=值) ...
- Python3 基础学习笔记 C01【变量和简单数据类型】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- 迪文屏幕T5UID3平台学习笔记二:变量图标显示和按键返回值按钮学习
需要实现一个功能:当点击某个按钮时候,要求能够改变按钮的字体和颜色,比如: 点击strat按钮后,显示stop,这样再点击就实现Stop逻辑,同时显示变成Start,也 就是说把Start和Stop按 ...
最新文章
- python井字棋_用Python做一个井字棋小游戏
- Redis 怎么实现保存Django 查询集
- osg prebuild 准备好开发工具
- python requests 重新定向错误 requests.exceptions.TooManyRedirects: Exceeded xx redirects 解决方法
- html:(17):img标签和表单标签
- Winfrom窗体应用程序___DataGridView
- 在使用代理的服务器上“curl: (6) Could not resolve host:“问题的解决方案
- 深度学习7-常用损失函数和自定义损失函数
- python unpack 到数列_842. 将数组拆分成斐波那契数列(Python)
- stata基于cox回归制作临床决策曲线
- HBuilderX 导入uniapp后,无法运行或发行,提示“[微信小程序开发者工具] × open IDE”
- python12岁该学吗_本人12岁,对编程感兴趣,之前也学过python,被爸妈打消积极性,面对爸妈的反对,我该顺从还是继续?...
- 能转PDF格式用的在线软件
- 微型SR602人体感应模块原理图
- VLC控件——属性和方法 .
- 盘点2016最值得突击的七大海外市场:最后一年窗口期,不出海就出局!
- 解决新版 Edge 浏览器每次打开都弹出“ 禁用开发人员模式扩展 ”弹窗的问题(亲测有效)
- Angular页面截图(滚动条显示完整)
- iOS常见控件的基本使用
- 《JavaWeb从入门到改行》fileupload,没毛病
热门文章
- linux内核源码阅读之facebook硬盘加速flashcache之二
- 2022年全栈开发者需要熟悉了解的知识列表
- 基于Springboot的爬虫项目
- docker运行教程
- linux 软件安装命令介绍
- 如何利用 RPA 实现自动化获客?
- 苹果手机以旧换新价格表_苹果支持安卓手机以旧换新;索尼公司将更名;百度网盘推出“防误删”文件恢复服务...
- 驱动人生6网卡版 v6.1.19.90 官方版
- matlab的机器学习工具箱在哪,[matlab]机器学习及SVM工具箱学习笔记
- 《Java 面经手册》PDF,全书5章29节,417页11.5万字,完稿发版!