jinjia2模板编程

来源:互联网 发布:timepicki.js 编辑:程序博客网 时间:2024/05/13 00:12

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 %}



0 0
原创粉丝点击