如何在Jinja中获取列表倒数第二个索引 实现循环非末尾元素后加分隔符
Jinja2 遍历列表非末尾元素加分隔符实现方案
首先你原有代码无法生效的核心原因是模板标签语法错误:endif和endfor的起始标记错误写成了<%,Jinja2的控制块起始/结束标记统一为{%,错误的标记导致判断逻辑没有被正确解析执行。
最优实现方案(推荐)
直接使用Jinja2 for循环内置的loop.last变量,无需手动计算列表长度,逻辑更清晰不易出错:
{% for value in values %} {{ value }} {% if not loop.last %} ---> {% endif %} {% endfor %}
说明:loop.last是Jinja2内置的循环状态变量,当遍历到列表最后一个元素时会返回True,以上代码表示仅当不是最后一个元素时,才输出后方的分隔符,完全符合你的需求。
长度判断的正确写法
如果你坚持使用列表长度判断的方式,修正语法错误后,你最开始写的loop.index < values|length本身逻辑是正确的,因为loop.index从1开始计数,长度为3的列表,只有前两个元素(index为1、2)满足小于3的条件,会输出分隔符:
{% for value in values %} {{ value }} {% if loop.index < values|length %} ---> {% endif %} {% endfor %}
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

