【第22期】观点:IT 行业加班,到底有没有价值?

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 模板语言。 它速度快,被广泛使用,并且提供了...

C++编程点滴3:函数模板重载问题

#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;cstring&gt; template&lt;typename T&gt; inline T const&...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

[python3.6 flask web学习]Flask模板引擎jinjia2

程序为了便于开发维护管理,通常表现层,控制层,业务逻辑层都是分开的。Flask框架也是这样的结构,Flask中的表现层中的模板中的占位符是采用的jiajin2引擎进行渲染的。 1.jinjia2模板引...

【effective c++读书笔记】【第7章】模板和泛型编程(2)

条款44:将与参数无关的代码抽离templates template是节省时间和避免重复代码的一个奇妙方法。class template的成员函数只有在被使用时才被暗中具现化。但是如果不小心,使用te...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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