【发布时间】:2015-08-16 21:01:09
【问题描述】:
我的模板中目前有以下代码:
{% 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 %}
并且遇到“字符串索引超出范围”错误。我尝试寻找可能的原因,但没有一个答案与自定义模板标签有关。
【问题讨论】:
-
我没有看到任何
i,但如果percentages在test中,你为什么不打电话给test.percentages.0? -
我刚刚编了
i。在常规的 python 代码中,我只会说percentages[i]并在该行之后增加i。此外,percentages不在test中。我最初的想法是在模型中添加一个percent_failed属性,但我相信编写这个项目的人正在使用 XML 文件中的解析数据填充这些模型对象,并且由于 XML 文件没有失败测试的数量应用程序崩溃。所以我只是计算我的views.py文件中的百分比,然后将它传递到页面中 -
那是
IndexError,请确保您列出的长度正确。 -
我已经验证它是正确的长度
-
该错误是尝试索引空字符串的结果。这是唯一一次使用 0 作为索引会导致这种情况。查看您的数据并衬线其中一个测试名称是空刺