和其它编程语言一样,jinja2也有流程控制。
一、测试
在jinja2,测试(Test)是根据变量或表达式的值生成布尔结果的一种函数工具,测试关键字is
{{ jinja2 is defined }}
或
{{ jinja2 is defined() }} #需要参数的测试,括号方式传入。
eg:
number(value),检查对象是否是一个数字
sequence(value),检查对象是否是序列
string(value),检查对象是否是字符串
undefined(value),检查一个对象是否未定义
二、判断语句
if...elif...else...endif
......
{% if A %}
...
{% elif B %}
...
{% else %}
{% endif %}
三、循环语句
{% 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,在一串序列间取值的辅助函数
原文地址:https://www.cnblogs.com/czdbky/p/9349867.html