猿问

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

我不知道如何表达自己的需求。我只显示代码。


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个元素!


江户川乱折腾
浏览 205回答 2
2回答

万千封印

您可以使用语法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 %}&nbsp; &nbsp; {% if forloop.counter0|divisibleby:3 %}&nbsp; &nbsp; <div class="card-group d-block d-md-flex u-card--gutters-2-md">&nbsp; &nbsp; {% endif %}&nbsp; &nbsp; &nbsp; &nbsp; <div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{{ k }}&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; {% if forloop.counter0|add:2|divisibleby:3 %}&nbsp; &nbsp; </div>&nbsp; &nbsp; {% endif %}{% endfor %}{% ifequal a|length|divisibleby:3 False %}&nbsp; &nbsp; </div>{% endifnotequal %}在这里,您不想将内容拆分为列表列表。

PIPIONE

如果我理解正确,则需要模板语法。尝试:{% for i in a %}&nbsp; &nbsp; <div class="card-group d-block d-md-flex u-card--gutters-2-md">&nbsp; &nbsp; {% for k in i %}&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="card border-0 rounded shadow-sm mb-3 transition-3d-hover">{{ k }}</div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; {% endfor %}&nbsp; &nbsp; </div>{% endfor %}要将列表划分为N个块,请使用。data_lis = [1,2,3,4,5,6,7,8,9]N = 3a =&nbsp; [data_lis[i:i+N] for i in range(0, len(data_lis), N)]&nbsp;print(a)输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
随时随地看视频慕课网APP

相关分类

Python
我要回答