创建类似loop.cycle()的Jinja变量/过滤器

1 投票
1 回答
3695 浏览
提问于 2025-04-16 13:11

我想要创建一个自定义的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.resetcycler.current 这两个功能。

撰写回答