如何解析django模板中的列表列表?

时间:2017-01-24 09:45:17

标签: python django list django-templates

{% for repo in repo_info %}

{% for branch in branch_info[forloop.counter] %}
            <li>Branch Name --> {{ branch }}</li>           
{% endfor %}

{% endfor %}

branch_info是一个列表清单。

它给我的错误无法解析其余部分---&gt; branch_info [forloop.counter]

有没有办法解析也是列表的列表元素?

2 个答案:

答案 0 :(得分:0)

您可以创建一个简单的template tag,以返回所请求索引的数据

#  some file named my_template_tags.py
@register.simple_tag
def at_index(data, index):
    return data[index]

如果使用无效索引,则会抛出异常。如果您不想要例外,则必须捕获它并返回一些有效数据。

它也可以与字典一起使用,但是传入密钥而不是索引。

{% load my_template_tags %}

{% for repo in repo_info %}

    {% for branch in branch_info|at_index:forloop.counter %}
            <li>Branch Name --> {{ branch }}</li>           
    {% endfor %}

{% endfor %}

答案 1 :(得分:0)

大多数情况下,当您的模板代码开始像这样凌乱时,这意味着您的数据没有正确的结构。在这种情况下,您似乎依赖repo_infobranch_info为“并行序列”(branch_info[x]的数据用于repo_info[x]的回购)。

最干净的解决方案是让repo保留自己的branch列表,这样您就可以迭代repo_info,然后对repo.branches的每个repo迭代进行迭代。

如果您无法通过这种方式轻松构建数据,则另一种解决方案是在您的视图中zip(或itertools.iziprepo_infobranch_info一起使用,以便您可以进行迭代

。模板中的(repo, branches)个元组。