【问题标题】:Iterate over the same list twice in Jinja2?在 Jinja2 中迭代同一个列表两次?
【发布时间】:2012-11-30 19:40:19
【问题描述】:

我正在尝试在两个不同的地方打印标签列表,但第二次我 for/in 列表时,它不会循环。

<ul>
# for tag in tags
    <li><a href="/my-tags/{{tag.name}}">{{tag.name}}</a></li>
# endfor
</ul>

<ul>
# for tag in tags
    <li><a href="/my-tags/{{tag.name}}">{{tag.name}}</a></li>
# endfor
</ul>

如果我把它放在我的模板中,第二个 UL 最终会是空的。

有什么想法吗?

编辑:

这就是我填充标签变量的方式。

contact_data.append({'name': 'Placeholder', 'emails': contact.emails, 'tags': [tag for tag in nt_tags.get_tags_by_taggee(contact)]})

再次编辑:

记录了我正在传递的内容及其

[<nt_tags.Tag object at 0x0000000005CAFF28>, <nt_tags.Tag object at 0x0000000005CAFFD0>]

这看起来只是一个列表而不是迭代器吧?

【问题讨论】:

  • 现在有这个确切的问题。
  • 我记录了第二个循环,此时列表为空。不知道为什么。我现在不得不将两个重复的列表传递给模板。如果我遇到更好的解决方案会更新。

标签: python google-app-engine jinja2


【解决方案1】:

如果tags 是一个迭代器,那么在第一次迭代结束时,将没有任何东西可以迭代。您可以在将其传递给您的模板 eg: list(tags) 在您的上下文中之前将其具体化为一个列表...

【讨论】:

  • 我更新了关于如何创建标签变量的问题。我认为我正在做的是创建一个新列表,当我将它分配给“标签”时,它不应该是一个迭代器,这就是我实际在做的事情吗?
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2013-05-23
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
相关资源
最近更新 更多