【问题标题】:forloop.counter for two dimensional array in Django TemplateDjango模板中二维数组的forloop.counter
【发布时间】:2022-08-07 22:15:25
【问题描述】:

同事!在我的模板中,我正在迭代不同的列表,其中包含组(团队)的不同信息(列表)。 我试图使用 forloop.counter。但它仅适用于一维列表。但我有一个二维列表:

team_members = [[\'\'], [\'\',\'\',\'\',\'\'], [\'\',\'\',\'\',\'\']]

我过去曾尝试过这段代码:

{% for team in teams %}
    {% for team_member in team_members %}
        {{ team_member|index:forloop.counter|index:forloop.counter }}
    {% endfor %}
{% endfor %}

如果我试试这个,一切都很完美。

{{team_members|index:1|index:0}}

但是当我尝试这个时:

{{team_members|index:forloop.counter|index:0}}

其中 forloop.counter = 1 它写给我

列表索引超出范围

你能解释一下为什么吗?

当我写:

{{team_members|index:forloop.counter}}

它也很完美。

编辑

<div class=\"card card-body\" data-toggle=\"tooltip\" data-placement=\"bottom\" data-html=\"true\" twipsy-content-set=\"true\" class=\"tooltip ficon-help-icon\" title=\"Leader: 
                {% with team_member=team_members|index:forloop.counter %}
                    {{ team_member|index:0 }}
                {% endwith %}<br>Members: {{team_members.1.1}}\">
                {{team.name|teamName}}
</div>
  • 为什么你甚至需要team_members|index:forloop.counter?如果您有一个循环,为什么不从循环变量中获取团队成员?另外index 不是内置模板过滤器,请参阅如何编写minimal reproducible example
  • Abdul Aziz Barkat,因为我有很多团队在我的循环中。

标签: django django-templates


【解决方案1】:

如果您链接类似的东西,模板引擎将尝试在forloop.counter 上应用index 模板过滤器而不是team_members[forloop.counter]

控制评估顺序的唯一方法是使用{% with %} template tag

{% with team_member=team_members|index:forloop.counter %}
    {{ team_member|index:0 }}
    {# or with the dot syntax: #}
    {{ team_member.0 }}
{% endwith %}

【讨论】:

  • 伯恩哈德·瓦兰特,谢谢!但我又得到了 indexError 。你能检查一下吗,我编辑了这个话题。
  • 现在确切的错误信息是什么?
  • 列表索引超出范围 {{ team_member|index:0 }}
  • 所以它可能无法索引?您必须分享您的代码,team_members 来自...
  • 列表 team_members 包含 [['']、['test1'、'test2']、[]]。也许,这是因为我在标题中使用 {% with %} ...更新。当我使用 {% with team_member=team_members|index:1 %} 时,没关系,但是当使用 {% with team_member=team_members|index:forloop.counter %} 时,它给我写了同样的错误。
猜你喜欢
  • 2010-11-16
  • 2017-11-24
  • 2019-02-26
  • 2014-07-23
  • 1970-01-01
  • 2019-04-16
  • 2011-08-30
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多