【发布时间】:2012-01-11 12:00:35
【问题描述】:
我的一个 jinja 模板中有类似于以下的代码
{% for post in posts %}
{% include ["posts/" + post.type + ".html", "posts/default.html"] %}
{% endfor %}
应该在posts 集合中呈现每个post,具体取决于帖子的.type。我为每个post.type 设置了不同的模板。对于那些我没有模板的人,它会恢复为default 帖子模板。
现在,我希望在loop.revindex 提供的帖子模板内从底部显示帖子的索引。但由于某种原因,如果我在帖子模板中使用loop.revindex,则会收到错误消息UndefinedError: 'loop' is undefined。
那么,loop 在included 模板中不可用吗?这是设计使然吗?我在组织模板的方式上是否做错了,导致该模板不可用?
编辑好的,我想出了一个解决方法,在 for 循环中,在我包含我的模板之前,我会这样做
{% set post_index = loop.revindex %}
并在帖子模板中使用post_index。不理想,但似乎是唯一的方法。不过我还是想知道你的解决方案。
编辑 2 另一件事,我可以访问 included 模板中的 post 变量,但不能访问 loop 变量。
【问题讨论】:
标签: python jinja2 template-inheritance