创建类似loop.cycle()的Jinja变量/过滤器
我想要创建一个自定义的Jinja变量,每次使用时都能在一组值中循环。这有点像loop.cycle('a','b','c')
,不过我并不在一个for
循环里面。
举个例子:
list = ['val1','val2','val3']
{{ list|next }}
{{ list|next }}
{{ list|next }}
{{ list|next }}
输出结果:
val1
val2
val3
val1
1 个回答
9
Jinja2 从版本 2.1 开始,支持循环不受限制的循环使用,具体可以查看文档。
在你的例子中,你可以这样做:
{% set cycling_list = cycler('val1', 'val2', 'val3') %}
{{ cycling_list.next() }}
{{ cycling_list.next() }}
{{ cycling_list.next() }}
还有 cycler.reset 和 cycler.current 这两个功能。