在 Jinja2 中迭代同一列表两次



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

<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>]

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

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

最新更新