为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Django模板中每个循环渲染3个元素?

如何在Django模板中每个循环渲染3个元素?

江户川乱折腾 2021-05-21 14:15:11
我不知道如何表达自己的需求。我只显示代码。data_lis = [1,2,3,4,5,6,7,8,9]如何将此列表分为N三个部分,每个部分有3个元素?我这样做是为了渲染<div class="card-group d-block d-md-flex u-card--gutters-2-md"><div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">element</div><div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">element</div><div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">element</div></div>我需要像上述样式一样渲染数据,但是如何动态更改渲染方式?我的解决方案a = [   [3,2,3],   [3,4,2],   [3,2]]我只是将它手工分成N三个部分,每个部分都有3个元素!
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您可以使用语法Rakesh说


data_list = [data_list[i:min(i+3, len(data_list)] for i in xrange(0, len(data_list_, 3)]

您也可以像这样在模板中更改语法


{% for i in a %}

    {% if forloop.counter0|divisibleby:3 %}

    <div class="card-group d-block d-md-flex u-card--gutters-2-md">

    {% endif %}

        <div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">

             {{ k }} 

        </div>        

    {% if forloop.counter0|add:2|divisibleby:3 %}

    </div>

    {% endif %}

{% endfor %}

{% ifequal a|length|divisibleby:3 False %}

    </div>

{% endifnotequal %}

在这里,您不想将内容拆分为列表列表。


查看完整回答
反对 回复 2021-05-25
?
PIPIONE

TA贡献1829条经验 获得超9个赞

如果我理解正确,则需要模板语法。


尝试:


{% for i in a %}

    <div class="card-group d-block d-md-flex u-card--gutters-2-md">

    {% for k in i %}        

            <div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">{{ k }}</div>        

    {% endfor %}

    </div>

{% endfor %}

要将列表划分为N个块,请使用。


data_lis = [1,2,3,4,5,6,7,8,9]

N = 3

a =  [data_lis[i:i+N] for i in range(0, len(data_lis), N)] 

print(a)

输出:


[[1, 2, 3], [4, 5, 6], [7, 8, 9]]


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号