数学运算+,-,*,/,**,//,%等数学运算符都支持.

逻辑运算and,or,not也同样支持

1.in判断元素是否在集合中

2.|管道操作符,默认使用Apply调用一个方法

3.~字符串连接

4()调用可调用对象

5..和[]获取属性

6.三元操作:value1ifexpressionelsevalue2支持

7.内建filter:(对于内建filter的别名,可以在jinja2的filters.py文件中查找)

8.abs(number)返回一个值的绝对值

9.batch(value,lincount,fill_with=None):接受的value是一个序列对象,linecount表明个数,最后生成一个列表,列表个数为linecount,如果提供的value长度小于linecount,不足的使用fill_with填充

10.capitalize(string):接受一个字符串,将其转换为首字母大写,其他字母小写的形式返回

11.center(value,width=80):接受一个字符串,将其至于80的长度中居中,不足的字符使用空格填充

12.default(value,default_value=u””,boolean=False):返回value指定的变量的值,如果value是Undefined那么返回default_value指定的值,boolean意义未知

13.dictsort(value,case_sensitive=False,by=‘key’):value为要遍历的字典,case_sensitive指示是否立即加载,设置为False表示延时加载,by表示以什么排序,可以通过设置by=‘value’来以值排序.

14.escape(string):返回一个转码的安全HTML

15.filesizeformat(value):接受一个数值,返回人易读的文件大小表示.

16.first(sequence):返回序列的第一个元素

17.float(value,default=0.0):将接受到的value转换成float类型,如果转换失败返回指定的default值

18.forceescape(value):强制进行HTML转码,也就是说不检查要转码的字符串是否是标记为安全的,这样可能会发生二次转码

19.format(value,*attribute):类似于字符串格式化’%d%s’这样的功能value是格式定义,attribute不定参数接受占位符代表的值.

20.groupby(value,attribute):按照指定的共有属性将集合进行分组,返回元组组成的列表,元组中第一个元素是用来分组的属性的值,第二个元素是分组得到的所有原集合元素的列表.

21.indent(string,width=4,indentfirst=False):将接受到的string,每行缩进width指定的字符数,indentfirst用来指定首行是否缩进.

22.int(value,default=0):将接受到的value转换成int型,如果转换失败,返回default指定的值

23.join(value,d=u””):接受一个序列类型的对象,向序列中进行插空d指定的字符串返回一个字符串

24.last(seq):返回指定序列的最后一个元素

25.length(obj):返回序列或者字典的项数

26.list(value):将接受到的value转换成一个list

27.lower(string):将接受到的字符串转换成小写形式.

28.pprint(value,verbose=False):漂亮的打印一个变量的值,多用于调试,verbose表示是否显示冗长的信息

29.random(seq):接受一个序列对象,随机返回其中的一个元素

30.replace(string,old,new,count=None):接受一个字符串,将其中的old表示的子串替换成new指定的子串,从左到右替换count次,如果count不指定,则替换一次

31.reverse(value):接受一个可迭代对象,返回逆序的迭代器

32.round(value,precision=0,method=‘common’):舍去运算,接受一个值,precision表示精度(小数点后保留几位),method可以取值common|ceil|floor,分别表示四舍五入|进位|舍去

33.safe(value):标记传入的value值是安全的,使用escape转码时不会发生二次转码

34.slice(value,slices,fill_width=None):切片,接受一个可迭代对象,返回slices指定的前n个元素,不足n个使用fill_width指定的对象进行填充

35.sort(value,reverse=False):接受一个序列对象,进行排序,reverse指定是否逆序

36.string(obj):接受一个对象,转换成一个string字符串

37.striptags(values):接受一个字符串,剥离SGML/XML标签,并且将多个空白字符转换成单空格

38.sum(sequence,start=0):接受一个序列对象,返回序列对象的元素和start的总和,如果指定的序列对象是空的,就返回start指定的值

39.title(string):将接受到的字符串转换成标题模式,即每个单词的首字母大写

40.trim(value):去掉字符串开始和末尾多余的空白字符

41.truncate(string,length=255,killwords=False,end=“…”):切断接受到的字符串,截取前length个字符,如果字符串比length长,切断后追加end指定的字符串,如果killwords=True可以返回,如果killwords=False不会有任何输出,不明白.

42.upper(string)把接受到的字符串转成大写

43.urlize(value,trim_url_limit=None,nofollow=False):接受一个url,转换成一个<a>标签表示的link,这个link的href为传入的url,innerText是url截取前trim_url_limit个字符,nofollow设置为true时,会为这个link加入一个属性rel=’nofollow’

44.wordcount(string):计算string中的单词数

45.wordwrap(string,width=79,break_long_words=True):返回经过包装的width指定宽度的字符,也就是说每读取width个字符就会换行.,break_long_words表明在获取到width个字符之后,如果一个单词还没有结束,是否截断单词,False将不会截断

46.xmlattr(d,autospace=True):通过接受一个字典,创建一个SGML/XML属性列表,例如:

<ul{{{‘class’=‘my_list’,‘missing’:none,‘id’:‘list’}|xmlattr}}/>

可以得到输出

<ulclass=’my_list’id=’list’/>

字典中指定的值为none的,将不会被解析成标签属性.

23内建测试:

23.1callable(object):测试一个对象是否是可调用对象

23.2defined(value):测试传入的对象是否已经定义了

23.3divisibleby(value,num)测试传入的数值是否可以被num整除

23.4escaped(value):检查传入的对象是否被转码了

23.5even(value):如果传入的对象是even的返回True,不懂even是什么样的对象

23.6iterable(value):检查对象是否是可迭代的

23.7lower(value):检查传入的字符串是否都是小写

23.8none(value):检查对象是否是空对象None

23.9number(value):检查对象是否是一个数字

23.10odd(value):检查传入的数字是否是奇数

23.11sameas(value,other):检查传入的对象和other指定的对象是否在内存中的同一块地址(同一个对象)

23.12sequence(value):检查对象是否是序列,序列同样是可迭代对象

23.13string(value):检查对象是否是string

23.14undefined(value):检查一个对象是否未定义

23.15upper(value):检查一个字符串是否全部大写

24全局函数:

24.1range([start,]stop[,step]):

{%foriinrange(10)%}

{{i}}

{%endfor%}

24.2lipsum(n=5,html=True,min=20,max=100):不知道用途

24.3dict(**items)根据传入的关键字参数构造一个字典对象.

for

循环打印一个序列,例如:

h1>Members</h1>

<ul>

{%foruserinusers%}

<li>{{user.username|e}}</li>

{%endfor%}

</ul>

在循环内部,你可以访问一些特殊的变量

VariableDescription

loop.index当前迭代的索引,从1开始算

loop.index0当前迭代的索引,从0开始算

loop.revindex相对于序列末尾的索引,从1开始算

loop.revindex0相对于序列末尾的索引,从0开始算

loop.first相当于loop.index==1.

loop.last相当于loop.index==len(seq)-1

loop.length序列的长度.

loop.cycle是一个帮助性质的函数,可以接受两个字符串参数,如果当前循环索引是偶数,则显示第一个字符串,是奇数则显示第二个字符串。它常被在表格中用来用不同的背景色区分相邻的行。

设置变量值{%setvariable_name=value%}

宏

{%macrolast_tweets(count=20)%}

<divclass=twitter>

{%fortweetinmodels.twitter.get_last_tweets(count)%}

<p><ahref="{{tweet.url|e}}">{{tweet.username|e}}</a>:

{{tweet.parsed_text}}

{%endfor%}

</div>

{%endmacro%}

Whydoyouneedanextensionforthat?Afunctionisperfectlyfine:

fromjinja2importcontextfunction

@contextfunction

defwidget(context,template_name,**extra_context):

t=jinja_env.get_template('widgets/'+template_name)

ctx=dict(context.items())

ctx.update(extra_context)

returnt.render(ctx)

jinja_env.globals['widget']=widget

Andtheninthetemplate::

{{widget('last_tweets.html')}}

1{%setnavigation=[('index.html','Index'),('about.html','About')]%}

2{%setkey,value=call_something()%}

globalfunctions和filters类似,注册方法都是将其保存于Environment中,前者保存在Environment.globals字典中,后者保存在Environment.filters字典中即可。

env.filters['filter_name']=filter_func
env.filters['globalfunction_name']=global_func
macro:
{%macroinput(name,value='',type='text',size=20)%}
<inputname="{{name}}"value="{{
value|e}}"size="{{size}}"type="{{type}}">
{%endmacro%}
{{input('username')}}
{%macrorender_dialog(title,class='dialog')-%}
<divclass="{{class}}">
<h2>{{title}}</h2>
<divclass="contents">
{{caller()}}
</div>
</div>
{%-endmacro%}
{%callrender_dialog('HelloWorld')%}
Thisisasimpledialogrenderedbyusingamacroand
acallblock.
{%endcall%}

jinja2模板常用方法的更多相关文章

  1. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment

    Environment 类版本: 本文所描述的 Environment 类对应于 Jinja2-2.7 版本.   Environment 类功能: Environment 是 Jinja2 中的一个 ...

  2. Python框架学习之Flask中的Jinja2模板

    前面也提到过在Flask中最核心的两个组件是Werkzeug和Jinja2模板.其中Werkzeug在前一节已经详细说明了.现在这一节主要是来谈谈Jinja2模板. 一.为什么需要引入模板: 在进行软 ...

  3. python操作三大主流数据库(5)python操作mysql⑤使用Jinja2模板提取优化页面展示

    python操作mysql⑤使用Jinja2模板提取优化页面展示 在templates目录下的index.html.cat.html等页面有一些共同的元素,代码比较冗余可以使用模板提取公共代码,在各网 ...

  4. Flask框架(2)-JinJa2模板

    为了把业务逻辑和表现逻辑分开,Flask把表现逻辑移到JinJa2模板,模板是一个包含响应文本的文件.它用占位变量表示动态部分,其具体要从请求上下文才知道. 把真实值替换掉占位变量成为渲染,JinJa ...

  5. 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范

    一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...

  6. SaltStack 使用 Jinja2 模板

    Jinja2 是基于 python 的一个模板引擎,如下,使用 Jinja2 实现根据不同的操作系统分发不同的文件: [root@localhost ~]$ cat /srv/salt/test.sl ...

  7. 自定义Web框架与jinja2模板

    web应用与web框架 web应用 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 import socket def handle_reque ...

  8. Flask从入门到精通之Jinja2模板引擎

    我们使用一个简单的例子切入到Jinja2模板引擎,形式最简单的Jinja2模板引擎就是一个包含响应文本的文件,实例如下: <h1>Hello World!</h1> 最简单的包 ...

  9. flask的jinja2模板中过过滤器的相关小内容

    jinja2模板中有自带的过滤器,有需要直接拿来使用.也可以自己定义过滤器 在过滤器中,有一些常见得操作及关键字.有对字符串的操作,还有对大小写转换的操作.还有对list的操作 过滤器的语法 {# 过 ...

随机推荐

  1. scala配置intellij IDEA15.0.3环境及hello world!

    1. Intellij IDEA Scala开发环境搭建 Intellij IDEA 15.0.3 默认配置里面没有Scala插件,需要手动安装,在Intellij IDEA 15.0.3 第一次运行 ...

  2. Golang:使用 httprouter 构建 API 服务器

    https://medium.com/@gauravsingharoy/build-your-first-api-server-with-httprouter-in-golang-732b7b01f6 ...

  3. Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统

    前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...

  4. C# 格式化字符串

    C#字符串使用{}来格式化 {引索,宽度:格式} 格式后面加数字保留位数 格式 C人民币 {0,10:C10} <script type="text/javascript"& ...

  5. 【装逼利器效率软件】一张图问你想不想用Launchy

    简述:Launchy博客园很多文章,长篇大论文字太多. 一张图问你想不想用? 长话多说: 一.设置Launchy扫描目录,安装后会默认,个人推荐自定义目录比较好 二.自行建立快捷方式别名文件夹,存放各 ...

  6. Unity Shader - 消融效果原理与变体

    基本原理与实现 主要使用噪声和透明度测试,从噪声图中读取某个通道的值,然后使用该值进行透明度测试. 主要代码如下: fixed cutout = tex2D(_NoiseTex, i.uvNoiseT ...

  7. centos安装SWFtools服务(pdf2swf)

    第一步:下载swftools-0.9.2.tar.gz 第二步:swftools tar -xzvf swftools-0.9.2.tar.gz cd swftools-0.9.2 ./configu ...

  8. Spring源码情操陶冶-AOP之ConfigBeanDefinitionParser解析器

    aop-Aspect Oriented Programming,面向切面编程.根据百度百科的解释,其通过预编译方式和运行期动态代理实现程序功能的一种技术.主要目的是为了程序间的解耦,常用于日志记录.事 ...

  9. RobotFrameWork安装笔记

    1.   RobotFrameWork安装配置笔记 1.1. 安装环境 64位win10家庭中文版 网上很多这方面的教程,但是比较零散,这里是自己安装配置的一个简单的笔记. 1.2. 安装说明 由于R ...

  10. Android_简易的短信发送器

    这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLay ...