You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Jinja2:如何在嵌套循环生成的表格中添加空行

问题解答

你不需要同时跟踪内外层循环来实现需求,当前代码的判断逻辑反而容易出错——比如当外层是最后一个但内层不是最后时,也会添加空行,这可能不符合你“每次内层循环结束后加空行”的初衷(应该是每个外层对应的内层循环全部跑完后加空行,且最后一个外层循环结束后不加)。

更简洁的实现方式

核心思路是:把空行的添加逻辑移到内层循环结束之后,只需要判断当前外层循环是否为最后一个即可,完全不用管内层循环的状态。

修改后的代码如下:

<table border="1" style="border-collapse:collapse;">
    {% for dict in table_data %}
        {% for test_name, test_dict in dict["tests_data"].items() %}
            <!-- 这里写你原本的表格行内容 -->
            <tr>
                <td>{{ test_name }}</td>
                <!-- 其他列的内容 -->
            </tr>
        {% endfor %}
        <!-- 内层循环跑完后加空行,最后一个外层循环不加 -->
        {% if not loop.last %}
            <tr bgcolor="FFFFFF">
                <td colspan="{{ titles|length }}"><br/></td>
            </tr>
        {% endif %}
    {% endfor %}
</table>

额外场景:内层每项后都加空行

如果你的需求是内层循环的每一项之后都加空行,仅排除每个内层的最后一项,同时最后一个外层的最后一项后也不加,那可以用Jinja2自带的loop.parent直接获取外层循环状态,不用手动定义outer_loop:

<table border="1" style="border-collapse:collapse;">
    {% for dict in table_data %}
        {% for test_name, test_dict in dict["tests_data"].items() %}
            <!-- 表格行内容 -->
            <tr>
                <td>{{ test_name }}</td>
            </tr>
            <!-- 内层非最后项、或外层非最后项的内层最后项,都加空行 -->
            {% if not loop.last or not loop.parent.last %}
                <tr bgcolor="FFFFFF">
                    <td colspan="{{ titles|length }}"><br/></td>
                </tr>
            {% endif %}
        {% endfor %}
    {% endfor %}
</table>

内容的提问来源于stack exchange,提问作者user2653179

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:25:42