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变量过滤器以及自定义过滤器相关推荐

  1. 千锋Flask学习笔记

    千锋Flask学习笔记 文章目录 千锋Flask学习笔记 写在前面 1. Flask介绍 2. Views 3. Request 4. Response 5. 会话技术 6. 模型和模板 7. 数据传 ...

  2. Flask学习笔记(四): Flask与数据库连接

    Flask学习笔记(四): Flask与数据库连接 前言 前面我们学习了Flask如何构建一个程序的流程,又研究了它的路由如何设定,还对如何获取模板表单数据进行了梳理,值得一提的就是Flask和SQL ...

  3. TypeScript学习笔记1:变量赋值及书写方式

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 变量赋值 ...

  4. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  5. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  6. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  7. Flask学习笔记总结(一)

    Flask学习笔记总结(一) 说明:开始在csdn上面记录一些关于自己学习技术的笔记总结. 文章目录 Flask学习笔记总结(一) 前言 一.python的web三大框架 二.flask入门 1.ws ...

  8. Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)

    模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染:  render_template("模板名字",键=值,键=值)       ...

  9. Python3 基础学习笔记 C01【变量和简单数据类型】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  10. 迪文屏幕T5UID3平台学习笔记二:变量图标显示和按键返回值按钮学习

    需要实现一个功能:当点击某个按钮时候,要求能够改变按钮的字体和颜色,比如: 点击strat按钮后,显示stop,这样再点击就实现Stop逻辑,同时显示变成Start,也 就是说把Start和Stop按 ...

最新文章

  1. python井字棋_用Python做一个井字棋小游戏
  2. Redis 怎么实现保存Django 查询集
  3. osg prebuild 准备好开发工具
  4. python requests 重新定向错误 requests.exceptions.TooManyRedirects: Exceeded xx redirects 解决方法
  5. html:(17):img标签和表单标签
  6. Winfrom窗体应用程序___DataGridView
  7. 在使用代理的服务器上“curl: (6) Could not resolve host:“问题的解决方案
  8. 深度学习7-常用损失函数和自定义损失函数
  9. python unpack 到数列_842. 将数组拆分成斐波那契数列(Python)
  10. stata基于cox回归制作临床决策曲线
  11. HBuilderX 导入uniapp后,无法运行或发行,提示“[微信小程序开发者工具] × open IDE”
  12. python12岁该学吗_本人12岁,对编程感兴趣,之前也学过python,被爸妈打消积极性,面对爸妈的反对,我该顺从还是继续?...
  13. 能转PDF格式用的在线软件
  14. 微型SR602人体感应模块原理图
  15. VLC控件——属性和方法 .
  16. 盘点2016最值得突击的七大海外市场:最后一年窗口期,不出海就出局!
  17. 解决新版 Edge 浏览器每次打开都弹出“ 禁用开发人员模式扩展 ”弹窗的问题(亲测有效)
  18. Angular页面截图(滚动条显示完整)
  19. iOS常见控件的基本使用
  20. 《JavaWeb从入门到改行》fileupload,没毛病

热门文章

  1. linux内核源码阅读之facebook硬盘加速flashcache之二
  2. 2022年全栈开发者需要熟悉了解的知识列表
  3. 基于Springboot的爬虫项目
  4. docker运行教程
  5. linux 软件安装命令介绍
  6. 如何利用 RPA 实现自动化获客?
  7. 苹果手机以旧换新价格表_苹果支持安卓手机以旧换新;索尼公司将更名;百度网盘推出“防误删”文件恢复服务...
  8. 驱动人生6网卡版 v6.1.19.90 官方版
  9. matlab的机器学习工具箱在哪,[matlab]机器学习及SVM工具箱学习笔记
  10. 《Java 面经手册》PDF,全书5章29节,417页11.5万字,完稿发版!