如何在Jinja2嵌套循环中获取外层循环的index索引值
Jinja2两层嵌套循环获取外层循环索引的方法
问题场景
使用两层嵌套的Jinja2循环生成HTML表格时,在内层循环中直接调用loop.index只能获取到内层循环的索引,无法直接拿到外层第一层循环的索引。
原始代码示例:
{% for row in row_data %} {# 第一层外层循环 #} {% for col, row_ in zip(column_names, row) %} {# 第二层内层循环 #} {{row_}} {% endfor %} {% endfor %}
解决方案
在外层循环内部、内层循环开始前,通过set指令将外层循环的索引赋值给自定义变量,内层循环中直接调用该自定义变量即可获取外层索引。
实现代码示例:
{% for row in row_data %} {# 第一层外层循环 #} {% set firstIndex = loop.index %} {# 存储外层循环的索引到自定义变量 #} {% for col, row_ in zip(column_names, row) %} {# 第二层内层循环 #} {# 此处调用firstIndex即可获取外层循环索引 #} 外层索引:{{ firstIndex }},内层索引:{{ loop.index }},单元格内容:{{ row_ }} {% endfor %} {% endfor %}
补充说明
- 如果需要从0开始计数的索引,可以将
loop.index替换为loop.index0 - 外层循环的其他属性也可以用同样的方式存储调用,包括
loop.length(外层循环总迭代次数)、loop.first(是否为外层循环第一个元素)、loop.last(是否为外层循环最后一个元素)等
内容的提问来源于stack exchange,提问作者vokiatik
相关产品推荐
相关产品推荐

