Django动态更改模板中的索引

时间:2015-06-02 21:16:59

标签: django django-templates

我目前在模板中有以下代码:

{% for test in page.object_list %}
    <tr>
        <td colspan="2" class="testsuite">{{ test.name.0 }}</td>
        <td class="testsuite">Failed: {{ percentages.0 }}%</td>
   </tr>
{% endfor %}

其中test.name.0是测试套件的名称,percentages是测试套件中失败的测试用例列表。我想知道如何将percentages.0更改为percentages.ii循环的每次迭代都会增加for

更新
在尝试了@ Gocht的回答后,我有以下代码:

在我的模板标签/ get_percentage.py文件

from django import template
register = template.Library()

@register.filter
def get_percentage(percentage_list, i):
    return percentage_list[int(i)]

并在我的模板中

{% load get_percentage %}
{% for test in page.object_list %}
    <tr>
        <td colspan="2" class="testsuite">{{ test.name.0 }}</td>
        <td class="testsuite">Failed: {{ percentages|get_percentage: forloop.counter0 }}%</td>
    </tr>
{% endfor %}

并且遇到“字符串索引超出范围”错误。我尝试寻找可能的原因,但没有一个答案与自定义模板标签有关。

1 个答案:

答案 0 :(得分:1)

我会假设您错过了percentages.0而非percentages.i的问题。在for模板上,您可以使用forloop变量访问索引。像这样:

{% for test in page.object_list %}
    {{ forloop.counter }}   # This will start at 1
    {{ forloop.counter0 }}  # This will start at 0
    # do something here
{% endfor %}

请参阅:this answer