如何在Jinja中将loop.index设为变量以获取外层循环的索引
Jinja嵌套循环获取外层索引的解决方案
原写法的语法问题在于:{% %}属于Jinja的逻辑执行块,内部直接引用变量即可,无需嵌套{{ }}输出标记。
正确实现方式
方式一:将外层索引存入自定义变量
{% for data in data_list %} {% set data_index = loop.index %} {% for data_dict in data %} <!-- 内层直接调用data_index即可拿到外层循环的1起始索引 --> <p>外层索引:{{ data_index }}</p> {% endfor %} {% endfor %}
方式二:通过loop.parent直接访问外层循环对象(更便捷,无需额外定义变量)
Jinja内置的loop对象天然支持父级循环引用,直接在内层通过loop.parent即可调用外层循环的所有属性:
{% for data in data_list %} {% for data_dict in data %} <p>外层1起始索引:{{ loop.parent.index }}</p> <p>外层0起始索引:{{ loop.parent.index0 }}</p> <p>内层当前1起始索引:{{ loop.index }}</p> {% endfor %} {% endfor %}
如果是多层嵌套循环,还支持链式调用loop.parent,比如三层嵌套时访问最外层索引可以写为loop.parent.parent.index。
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

