jinjia2模板编程

转载 2017年01月03日 23:03:14

jinjia2模板可以保存在任何基于文本的文件中,比如XML、HTML、CSV等,由普通内容、变量、表达式、标签、和注释组成,可以通过render_template函数进行渲染


构成:
普通内容:渲染时不对其进行解释。
<head> 
<title>
<body>
<li>
变量:渲染时进行替换的内容
{{ ... }}
表达式:算数、逻辑操作表达式
{%  %}
标签:渲染时进行逻辑控制
注释:渲染时进行删除
{# comment #}


过滤器:
过滤器是一种转换变量输出内容的技术,比如将字符串变量转换为大写形式、去除特殊字符等功能
多个过滤器可以链式调用,类似linux命令行的管道,前面的输出作为后一个的输入
灵活运用过滤器可以极大的丰富模板的转换功能

abs(number)
atrr(object,name)
capitalize(s)
center(value,width = 80)
default(value,default_value = u' ',boolean = False)
dictsort(value,case_sensitive = False,by = 'key') 
escape(string)
filesizeformat(value,binary=False)
first(sequence) 返回序列的第一个元素
float(value,default = 0.0)
forceescape(value)
format(value,*attribute) 字符串格式化功能,value是格式定义,attribute是可变长参数接受占位符代表的值。
{{ "%s-%s"|format("hello","jack")}}
-> hello-jack
groupby(value,attribute) 按照指定的共有属性将集合进行分组,返回元组组成的列表
<ul>
{% for group in perons|groupby('gender') %}
<li> {{ group.grouper }} <ul>
{% for person in group.list %}
<li>{{ person.first_name }} {{ person.last_name }} </li>
{% endfor %} </ul> </li>
{% endfor %}
</ul>

indent(string,width = 4,indentfirst = False)  用于定义缩进
int(value,default = 0)
join(value,d = u'')
{{ [1,2,3]|join('|') }}
{{ [1,2,3]|join }}
last(seq) 返回指定序列的最后一个元素
length(obj) 对象一般为序列或字典
list(value) 将接受的value转换为一个list
lower(value)
pprint(value,verbose = False)
random(seq) 随返回seq中的一个元素
replace(string,old,new,count = None) 替换字符,count指定替换个数
reverse(value) 接受一个可迭代对象,进行逆序输出
round(value,precision = 0,method = 'common') 舍入运算,precision 指定精度,method 可以是common/ceil/floor 四舍五入、进位、舍去
safe(value) 标记value为安全的,使用escape进行转码时不会二次转码
slice(value,slices,fill_width = None) 切片
sort(value,reverse = False,case_sensitive = False,attribute = None)
升序、大小写不敏感、按attribute(value的一个属性)进行排序
string(object)
striptags(value) 去除SGML、XML标签
sum(iterable,attribute = None,start = 0)
对可迭代变量或可迭代变量的某一属性进行求和
title(s) 将s转换为标题的显示形式
trim(value) 去除字符串的前导和续尾中的空格
truncate(s,length = 255,killwords = False,end = '...')
将字符转换为简略形式
upper(s)
wordcount(s) 计算字符串中的单词个数
wordwrap(s,width = 79,break_long_words = True,wrapstring = None)
将字符串按参数中的值进行分行处理


流程控制
测试:
allable(object)
defined(value)
divisibleby(value,num)
escaped(value)
even(value)
iterable(value)
lower(value)
none(value)
number(value)
odd(value)
sameas(value,other) 用于判断value与other是否在同一块内存中(属于同一个对象)
sequence(value)  检查对象是否是序列
string(value)
undefined(value)
upper()

eg:
{% if loop.index is divisibleby(3) %}

判断语句:
{% if xx %}
{% elif %}
{% else %}
{% endif %}

循环语句
{% for user in user是 %}

loop.index
loop.index0
loop.revindex
loop.revindex0
loop.first
loop.last
loop.length
loop.cycle 在一串序列间取值的辅助函数

模板继承:

基模板至少应该包含如下内容:

必须包含的
<html>
<head>
<body>
通常需要包含的
<title> 声明页面标题
<meta> 标签标识的页面显示方式
<link> 标签引入需要的css文件
<scrip> 标签引入的脚本文件 javascript
<header> 变迁显示的页面头
{% block content %}{% endblock %}  用于引用子模块
子模板
{% extend “base.html” %}
{% block xxx %}  xxx不能在模板中重复出现
xxx
{% endblock %}



相关文章推荐

边做边学Python Flask Web开发(4)-- 使用Jinjia2模板(上)

概述Flask中我们通常使用Jinjia2模板语言来实现复杂的页面渲染,Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了...

边做边学Python Flask Web开发(5)-- 使用Jinjia2模板(中)

上一篇介绍了Jinjia2模板系统的基本用法,本篇将深入对Jinjia2进行探讨,对网页设计中经常会用到的一些高级特性进行介绍。模板复用复用是网页设计非常常用的特性,比如我们的页面头部的网站名称和页尾...

C++模板元编程之编译期间“产生从2到某个给定值之间的所有质数”

本文的灵感来自于C++模板元编程技术与应用,里面讲到“ 1994年,在圣迭哥举行的一次C++标准委员会会议期间, Erwin Unruh展示了一段特别的代码,可以在编译期以编译 错误信息的方式产...
  • lslxdx
  • lslxdx
  • 2012-09-02 17:30
  • 1107

模板与泛型编程2

1.模板实参推断1.1 自动类型转换const转换:非const对象的引用(指针)传递给一个const的引用(指针)形参。 数组或函数指针转换:若函数实参不是引用类型,则可以对数组或函数类型的实参应...

模板和泛型编程 --实例化-- C++ primer 第十六章(2)

16.1.4. 模板类型形参 类型形参由关键字 class 或 typename 后接说明符构成。在模板形参表中,这两个关键字具有相同的含义,都指出后面所接的名字表示一个类型。模板类型形参可作为类型...

c++模板元编程2

c++模板元编程第二章练习题 2-0. 编写一个一元元函数add_const_ref,如果T是一个引用类型,就返回T,否则返回T const&。编写一个程序来测试你的元函数。提示:可以使用boos...

泛型编程之模板 2

上次写了个Max函数,那么它能用来比较字符串吗? 我们传进 需要去的参数是地址,函数将直接比较两个地址的大小,所以显然不能比较字符串,那么如何让它能够比较字符串呢,我们就需要对模板函数进行特化1 模...

C++泛型编程2——类模板,容器适配器,仿函数

模板编译  当编译器遇到一个模板定义时,它并不生成代码。只有当我们实例化出模板的一个特定版本时,编译器才会生成代码。当我们使用模板时,比编译器才生成代码。  这一特性影响了我们如何组织代码以及错误何时...

【C++泛型编程】模板偏特化、局部类和型别映射(Int2Type,Type2Type)以及型别选择

1.模板偏特化          模板偏特化是让你在template的所有可能实体中特化出一组子集。 下面是一个模板全特化的例子,假设有一个类模板,名为Widget: template class W...

网络编程模板2

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)