Django模板用于循环并显示第一个X匹配

时间:2012-09-18 09:14:13

标签: django templates

不确定如何说出我的问题,但我基本上想要遍历列表并仅显示前4个匹配项。

{% for reward_type in reward_types %}
    <h2>{{ reward_type.name }}</h2>
    <div class="reward_category">
    {% for category in reward_categories %}
        {% if category.reward_type == reward_type %}
            .
            .
            Show the first 4 matches
            .
            .
        {% endif %}
    {% endfor %}
    </div>
{% endfor %}

3 个答案:

答案 0 :(得分:22)

如果没有{% if category.reward_type == reward_type %},您可以使用slice

即。如果您的category_matching_rewards列表中包含category.reward_type == reward_type,那么在模板中可以将其作为

完成
{%for category in category_matching_rewards|slice:"4" %}
       Show catgory
       ....
{%endfor%}

答案 1 :(得分:4)

您可以使用forloop.counterfor循环设置循环中可用的一些变量:

forloop.counter循环的当前迭代(1索引)

forloop.counter0循环的当前迭代(0索引)

forloop.revcounter循环结束时的迭代次数(1索引)

forloop.revcounter0循环结束时的迭代次数(0索引)

forloop.first True 如果这是第一次通过循环

forloop.last True 如果这是最后一次循环

forloop.parentloop对于嵌套循环,这是上面的循环当前的循环

Source

答案 2 :(得分:-4)

使用视图功能准备列表,然后再将其传递给模板。

Django模板不适用于这样的复杂匹配。

正如所讨论的那样; - )