如何在Django模板中分两次遍历列表?
Django模板分两次遍历列表的解决方案
Django模板支持使用slice过滤器对列表进行切片,刚好能解决你分两次遍历的需求,直接用以下写法即可,不需要复杂的while循环:
遍历第0-3项(前4个元素)
<div class="card-group"> {% for item in arr|slice:"0:4" %} <div class="card"> <img src="{{ item.img_url }}" alt="{{ item.title }}"> <div class="card-body"> <h5 class="card-title">{{ item.title }}</h5> <a href="{{ item.link }}" class="btn btn-primary">查看</a> </div> </div> {% endfor %} </div>
遍历第4-7项(接下来的4个元素)
<div class="card-group"> {% for item in arr|slice:"4:8" %} <div class="card"> <img src="{{ item.img_url }}" alt="{{ item.title }}"> <div class="card-body"> <h5 class="card-title">{{ item.title }}</h5> <a href="{{ item.link }}" class="btn btn-primary">查看</a> </div> </div> {% endfor %} </div>
关键说明
slice过滤器的语法是slice:"起始索引:结束索引",遵循Python切片的左闭右开规则,所以0:4会取索引0、1、2、3的元素,4:8取4、5、6、7的元素。- 如果你的列表长度不足8,切片会自动处理剩余元素,不会抛出索引越界错误。
- 之前报错大概率是直接用了Python的切片写法(比如
arr[0:4]),Django模板里必须通过slice过滤器实现切片操作。
内容的提问来源于stack exchange,提问作者metalboxhead
相关产品推荐
相关产品推荐

