jinja是組成Flask的模板引擎,先寫一個demo吧python
jinja的速度和Mako差很少,但比Genshi以及Django的模板引擎快10~20倍。
1.在jinja2中for循環內置常量{% block body %} <ul> {% for user in users %} <li><a href="{{ user.url }}">{{ user.username }}</a></li> {% endfor %} </ul> {% endblock %}
loop.index | 當前迭代的索引(從1開始) |
loop.index0 | 當前迭代的索引(從0開始) |
loop.first | 是不是第一次迭代,返回True\/False |
loop.last | 是不是最後一次迭代,返回True\/False |
loop.length | 序列的長度 |
注意:不能夠使用continue和break表達死來控制循環的執行。django
2.運算符 oop
+
號運算符:能夠完成數字相加,字符串相加,列表相加。可是並不推薦使用+
運算符來操做字符串,字符串相加應該使用~
運算符。-
號運算符:只能針對兩個數字相減。/
號運算符:對兩個數進行相除。%
號運算符:取餘運算。*
號運算符:乘號運算符,而且能夠對字符進行相乘。**
號運算符:次冪運算符,好比2**3=8。in
操做符:跟python中的in
同樣使用,好比{{1 in [1,2,3]}}
返回true
。~
號運算符:拼接多個字符串,好比{{"Hello" ~ "World"}}
將返回HelloWorld
。Jinja2模塊最重要的部分----宏url
宏至關於一個搭建好的頁面一部分,能夠被引入,能夠往宏傳遞參數。能夠將一些常常用到的代碼片斷放到宏中,而後把一些不固定的值抽取出來當成一個變量,在使用宏時傳遞參數,從而將宏渲染成爲頁面的一部分。spa
好比:定義一個input標籤宏:code
{% macro input(name, value='', type='text') %} <input type="{{ type }}" name="{{ name }}" value="{{ value|e }}"> {% endmacro %}
在其它地方使用這個宏快速建立出符合要求的input標籤:
<p>{{ input('username') }}</p> <p>{{ input('password', type='password') }}</p>還有模板的繼承以及過濾器等等~~