我目前在模板中有以下代码:
{% 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.i
,i
循环的每次迭代都会增加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 %}
并且遇到“字符串索引超出范围”错误。我尝试寻找可能的原因,但没有一个答案与自定义模板标签有关。
答案 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