flask的jinja2模板中过过滤器的相关小内容
jinja2模板中有自带的过滤器,有需要直接拿来使用。也可以自己定义过滤器
在过滤器中,有一些常见得操作及关键字。有对字符串的操作,还有对大小写转换的操作。还有对list的操作
过滤器的语法
{# 过滤器调用方式 {{ 变量 | 过滤器的名称 }} #} 这里用到了注释模板中的注释
首先整理一下关键字
字符串:
1.对大写转换为小写,lower。相对的,那么就有小写转换为大写,upper。
那么还有是首字符大写,captialize,这个单词在字符串的操作中出现过
2.还有一个转义。如果在输出中出现了html标签,那么在输出的时候我又不想显示标签,我只想要标签给我达到的效果,
而不需要看到标签的出现,就需要转义
比如:
safe过滤器,可以禁用转义
{{ '<strong>hello</strong>' | safe }}
我们这里用到了safe的关键字。hello就会在输出的时候变为粗体
在这里要提到另一个过滤器的关键字。striptage
比如:
过滤所有的html标签,em标签是斜体。跟转义没有任何关系,只是在过滤标签,把所有文本中的标签过滤掉
{{ '<em>hello</em>' | striptags }}
放在这里是要对禁止转义有个区别,safe是实现标签的功能,不输出标签,striptage是把标签过滤掉,只输出文本
3.字符串反转用到reverse
{{ '来一个反转' | reverse }}
list的相关过滤及关键字:
1.我们可以拿到列表中的首个元素,first
{{ [100,99,65] | first }}
2.相对的,我们就可以拿到末尾的元素 last
{{ [100,90,520] | last }}
3.我们也可以对list量取长度。length
{{ [1,2] | length }}
4.如果list中的元素都为int。也可以求和 sum
{{ [100,200] | sum }}
5.list中的int杂乱无序,也可以将list排序 sort
{{ [12,3,4,56,7,89,8,76,5] | sort }}
以上的都是对单个的来说,那么对于语句块来说也可以使用,对英文都转换为小写,或者大写都可以
{% filter upper %}
hello world hello python hello flask hello jinja2 hello myself hello my broter
{% endfilter upper %}
需要注意的是,要有结束
既然单个的使用过滤器,我们是不是也可以一起配合使用,是的,就会有链式过滤,也就是嵌套过滤,需要注意的是执行顺序
链式调用(嵌套的使用过滤器)
{{'abcdefg' | reverse | upper }} 双管道调用,先反转。后大写
{{'abcdefg' | upper | reverse }} 执行的顺序。谁先谁后要取决先调用了哪个关键字
jinja2模板给我们有很多的过滤器选择,但是我们也可以自己定义过滤器,首先需要在py文件中配置
所需要的过滤器。一切代码都是为了业务,代码也是实现业务的需求
需要注意的是在函数中我们要带有参数,这个参数类似于jquery中的filter所需要带的参数
# 自定义一个过滤器
def my_filter(val):
return '$' + str(val)
# 把自定义的过滤器赋给模板,第一个参数是自定义的过滤器的名称,第二个是过滤器的名称
# 这里调用 add_template_filter 这个方法。来对方法名进行传递。
app.add_template_filter(my_filter, 'my_filter')
flask的jinja2模板中过过滤器的相关小内容的更多相关文章
- Flask的jinja2模板中自定义过滤器的使用
大部分的模板引擎都是支持过滤器功能的,jinja2也不例外,它提供了丰富的内置过滤器,但是有些时候还是没办法满足我们的需求,好在jinja2支持自定义过滤器,下面是一个简单的例子. 下面的例子完成了自 ...
- flask框架下的jinja2模板引擎(2)(过滤器与自定义过滤器)
flask框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html 这篇论文主要用来记录下 jinja2 的过滤器. 什么是过 ...
- 【Flask】 Jinja2模板语言
Jinja2 Jinja2是Python Web编程中的主流模板语言.因为flask是基于Jinja2和Werkzeug发展而来,在安装flask的时候jinja2自动就被装在上面了. 之前提到了很多 ...
- flask之jinja2模板语言
一.jinja2简单介绍 Jinja2是Python里一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能.其中最显著的一个是增加了沙箱执行功能和可选的 ...
- Django 模板中 变量 过滤器的使用方法
一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量. 2.使用dot(.)能够访问变量的属性 3.当模板引擎碰到dot的 ...
- Django 模板中 变量 过滤器 标签 的使用方法
一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量. 2.使用dot(.)能够访问变量的属性 3.当模板引擎碰到dot的 ...
- 测试开发之Django——No7.Django模板中的过滤器
1.add 将参数添加到值. 例如: {{ value|add:"2" }} 如果value是4,那么输出将是6. 此过滤器将首先尝试将两个值强制转换为整数.如果失败,它将尝试将值 ...
- Vue基础-在模板中使用过滤器
Vue 测试版本:Vue.js v2.5.13 官网给了过滤器的两种使用方式: 1.你可以在一个组件的选项中定义本地的过滤器: 结合实例,我给两个代码: <div id="app&qu ...
- 十二:jinja2模板中使用url_for
在页面中,有点击跳转到另一个地址的时候,可以使用url_for来指定要跳转的视图函数:{{ url_for('view_function') }} 如果该视图需要接收参数
随机推荐
- codeforces 1007B Pave the Parallelepiped
codeforces 1007B Pave the Parallelepiped 题意 题解 代码 #include<bits/stdc++.h> using namespace std; ...
- Ubuntu 64 + IntelliJ IDEA + Genymotion 搭建Android开发环境
环境搭建所需可至 http://pan.baidu.com/s/1gd1Kf4Z 下载 注: 此处假定 Ubuntu 用户名为 chenfei 开发相关全部存放在 /home/chen ...
- React Native 基础报错及解决方案记录
刚开始上手RN,碰到很多坑,记录一下.碰到问题多去看看github上面的issue! 启动命令react-native run-ios报错 1.:xcrun: error: unable to fin ...
- [Java多线程] LinkedBlockingQueue
java.util.concurrent包下的新类.LinkedBlockingQueue就是其中之一,是一个阻塞的线程安全的队列,底层采用链表实现. LinkedBlockingQueue Link ...
- BZOJ4241:历史研究(回滚莫队)
Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...
- Hive学习之路 (十六)Hive分析窗口函数(四) LAG、LEAD、FIRST_VALUE和LAST_VALUE
数据准备 数据格式 cookie4.txt cookie1, ::,url2 cookie1, ::,url1 cookie1, ::,1url3 cookie1, ::,url6 cookie1, ...
- C# winform webbrowser如何指定内核为IE11?
1)假设你应用程序的名字为MyApplication.exe 2)运行Regedit,打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsof ...
- Spring AOP源码分析(二)动态A0P自定义标签
摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 之前讲过Spring中的自定义注解,如果声明了自定义的注解,那么就一定 ...
- Spring源码分析(二十一)加载BeanFactory
摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 目录 一.定制化BeanFactory 二.加载BeanDefinit ...
- C语言程序设计I—第五周教学
第五周教学总结(29/9-7/10) 本周为国庆节放假,周六周日提前补课,计算机专业已补,软件专业未补,由于国庆放假冲课不补,因此,软件专业在整体进度上落后计算机一次课,估计我要特别抽时间才能将进度拉 ...