【问题标题】:How to parse list of lists in django template?如何解析 django 模板中的列表列表?
【发布时间】:2017-01-24 09:45:16
【问题描述】:
{% for repo in repo_info %}

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

{% endfor %}

branch_info 是一个列表列表。

它给了我无法解析剩余部分的错误 ---> branch_info[forloop.counter]

有什么方法可以解析同时也是列表的列表元素?

【问题讨论】:

标签: python django list django-templates


【解决方案1】:

您可以创建一个简单的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 %}

【讨论】:

    【解决方案2】:

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

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

    如果您不能以这种方式轻松构建数据,另一种解决方案是在您的视图中将zip(或itertools.iziprepo_infobranch_info 放在一起,以便您可以迭代模板中的(repo, branches) 元组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2020-11-07
      • 1970-01-01
      • 2020-11-23
      • 2022-01-13
      相关资源
      最近更新 更多