Django模板中Jinja2的loop.last变量无法正常工作
问题根因
Django 原生模板引擎的 for 循环内置状态变量前缀为 forloop,你代码里写的 loop.last 是 Jinja2 模板引擎的语法,Django 默认模板无法识别该变量,因此判断逻辑不会按预期触发。
修复方法
将判断条件中的 loop.last 替换为 forloop.last 即可,修正后的核心模板代码如下:
{% for n in program_sessions %} <!-- 1st session start --> <tr class="mb-2"> <td class="border border-0"> <div class="row"> <div class="col-6 mx-0 px-0"> <span class="float-end">Row: </span> </div> <div class="col-6 mx-0 px-0"> <span class="text-white">{{program.workout_time}}m</span> </div> {% if not forloop.last %} <div class="col-6 mx-0 px-0"> <span class="float-end">Rest: </span> </div> <div class="col-6 mx-0 px-0"> <span class="text-white">{{program.rest_time}}min</span> </div> {% else %} <div class="col-6 mx-0 px-0"> <span class="float-end">Last Iteration boii! </span> </div> {% endif %} </div> </td> </tr> <!-- 1st session ends --> {% endfor %}
补充说明
Django 原生模板 for 循环常用的内置状态属性如下:
forloop.counter:当前循环的序号,从1开始计数forloop.counter0:当前循环的序号,从0开始计数forloop.first:布尔值,当前迭代为循环第一次时返回Trueforloop.last:布尔值,当前迭代为循环最后一次时返回Trueforloop.parentloop:嵌套循环场景下,指向外层循环的forloop对象
注:只有你手动将Django的模板引擎配置为Jinja2时,才需要使用loop前缀访问循环状态变量,默认Django模板统一使用forloop前缀。
内容的提问来源于stack exchange,提问作者Hamza Farooq
相关产品推荐
相关产品推荐

