第一行有两个项目第二个,下一个有三个

时间:2016-12-09 13:30:03

标签: django loops templates frontend

我有模型(事件),我希望模板有两种显示项目的方法。 第一行必须包含两个项目,具有特殊样式 第二个和第二个必须包括三个,具有特殊样式

如何使用循环执行此操作?

2 个答案:

答案 0 :(得分:0)

你可以这样做

views.py

def view(request):
  events = Event.objects.all()
  l = []
  for i in range(0,len(events), 5):
      l.append((events[i:i+2], events[i+2:i+5]))
  return render(request, "template.html", {"events": l})

template.html

{% for two_items, three_items in events %}
   <tr class="class1">
   {% for item in two_items %}
    <td> {{ item }}</td>
   {% endfor %}
   <tr>
   <tr class="class2">
   {% for item in three_items %}
    <td> {{ item }}</td>
   {% endfor %}
   <tr>
{% endfor %}

答案 1 :(得分:0)

cycleforloop标记的组合将为您提供所需的输出: 例如:

{% for item in items %}
    {% if forloop.counter < 3 %}
        {% if forloop.first %}
            <tr class="A">
        {% endif %}
        <td>{{ item }}</td>
    {% endif %}
    {% if forloop.counter == 3 %}
        </tr>
    {% endif %}
    {% if forloop.counter >= 3 %}
        {% cycle "<tr class='B'>" "" "" %}
        <td>{{ item }}</td>
        {% cycle "" "" "</tr>" %}
    {% endif %}
{% endfor %}