和其它编程语言同样,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,在一串序列间取值的辅助函数