我对 Django 有一个奇怪的问题。我有一组对象,我会像往常一样在模板中循环。但是,我需要将元素分成三组。页面布局如下:
绘画 1 - 绘画 2 - 绘画 3
D E S C R I P T I O N 1
D E S C R I P T I O N 2
D E S C R I P T I O N 3
绘画 4 - 绘画 - 5 绘画 6
D E S C R I P T I O N 4
D E S C R I P T I O N 5
D E S C R I P T I O N 6
等等等等
我实在想不出最好的一组 Django 标签来真正做到这一点。似乎有些棘手。 {% cycle %} 语句没有多大帮助。
当然,除非我做了一些 Java 脚本黑客攻击而将 Django 排除在外?必须有某种说法“将所有描述 div 一个接一个地放在一起”或类似的说法。不确定如何最好地处理此排序。有什么想法吗?干杯。
最佳答案
您可以为此使用一个简单的过滤器:
import itertools
from django import template
register = template.Library()
@register.filter
def chunks(value, chunk_length):
"""
Breaks a list up into a list of lists of size <chunk_length>
"""
clen = int(chunk_length)
i = iter(value)
while True:
chunk = list(itertools.islice(i, clen))
if chunk:
yield chunk
else:
break
然后在你的模板中:
{% for chunk in paintings|chunks:3 %}
<div class="row">
{% for painting in chunk %}
<div>{{ painting }}</div>
{% endfor %}
</div>
{% endfor %}
关于css - Django 模板 : Group items in Threes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845227/