如何在Jinja循环中轮流复用category_masks列表元素渲染pansion?
解决Jinja循环复用列表元素的问题
直接用Jinja内置的loop变量就能搞定,别折腾手动自增变量了——Jinja里的变量是块级作用域,手动自增根本不生效。
核心思路是拿当前循环的索引对category_masks的长度取模,实现列表元素的循环复用:
{% for pansion in pansions %} <!-- 你的卡片渲染代码 --> <div class="card-category"> {{ category_masks[loop.index0 % category_masks|length] }} </div> {% endfor %}
逻辑说明:
loop.index0是当前循环的索引,从0开始计数(如果习惯用从1开始的loop.index,就改成(loop.index - 1)再取模)category_masks|length是你这个列表的元素总数- 取模运算
%会让索引始终在0到列表长度-1的范围内循环,用完所有元素后自动从头开始
举个例子:如果category_masks是["mask1", "mask2", "mask3"],第1个pansion用mask1,第2个用mask2,第3个用mask3,第4个又回到mask1,刚好实现轮流复用的需求。
内容的提问来源于stack exchange,提问作者Dmitry S
相关产品推荐
相关产品推荐

