和其它編程語言同樣,jinja2也有流程控制。編程
1、測試編程語言
在jinja2,測試(Test)是根據變量或表達式的值生成布爾結果的一種函數工具,測試關鍵字is函數
{{ jinja2 is defined }}工具
或oop
{{ jinja2 is defined() }} #須要參數的測試,括號方式傳入。測試
eg:對象
number(value),檢查對象是不是一個數字排序
sequence(value),檢查對象是不是序列字符串
string(value),檢查對象是不是字符串string
undefined(value),檢查一個對象是否未定義
2、判斷語句
if...elif...else...endif
......
{% if A %}
...
{% elif B %}
...
{% else %}
{% endif %}
3、循環語句
{% for .. in ... %}
...
{% endfor %}
一些被重複執行的語句被稱爲循環體,可否繼續重複決定了循環的終止條件
注:字典是無序的,因此可能須要把它做爲一個已排序的列表傳入模板或使用dictsort過濾器
但,jinja模板中不能使用break或continue終止,怎麼辦?
可經過loop下的一一些特殊變量控制,如
loop.index,當前循環迭代屢次數(從1開始)
loop.index(),當前循環迭代的次數(從0開始)
loop.revindex,到循環結束須要迭代的次數(從1開始)
loop.revindex(),到循環結束須要迭代的次數(從0開始)
loop.first,若是是第1次迭代,則爲true
...
loop.length ,序列中農的項目數量
loop.cycle,在一串序列間取值的輔助函數