Django模板用while循环渲染Bootstrap轮播图触发标签错误如何解决
问题原因
- Django 模板系统原生不支持
{% while %}标签,你使用了模板引擎无法识别的非原生标签,才会触发标签未注册的报错。 - 你写的
{% i += 1 %}也不符合Django模板语法规范,Django模板不支持直接在模板中进行变量自增赋值操作。 - 你用
{% with i=0 %}定义的变量i,在紧接着的{% endwith %}后就已经超出作用域,后续代码根本无法读取到该变量。
修复方案
你的轮播指示器数量和传入的images资源数量完全对应,可以直接使用Django原生支持的{% for %}标签遍历images,配合内置的forloop.counter0变量(从0开始计数的循环索引)生成指示器,不需要额外自定义计数变量。
将你代码中<ol class="carousel-indicators">块内的错误代码替换为以下内容即可:
<ol class="carousel-indicators"> <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li> {% for image in images %} <li data-target="#carouselExampleIndicators" data-slide-to="{{ forloop.counter0|add:1 }}"></li> {% endfor %} </ol>
注:此处
|add:1是因为你固定放了第一张默认轮播图,对应索引0,后续商品轮播图的索引从1开始计数。
内容的提问来源于stack exchange,提问作者amiller_lite
相关产品推荐
相关产品推荐

