2012-01-11 83 views
11

我也有类似的在我的神社模板神社的循环变量不可在包括-d模板

{% for post in posts %} 
    {% include ["posts/" + post.type + ".html", "posts/default.html"] %} 
{% endfor %} 

之一这是应该呈现每个postposts集合里面以下,取决于.type码的帖子。我为每个post.type有不同的模板设置。对于那些没有模板的用户,它将恢复为default发布模板。

现在,我想要从底部显示帖子的索引,位于帖子模板内部,由loop.revindex提供。但由于某种原因,如果我在帖子模板中使用loop.revindex,我会收到错误消息UndefinedError: 'loop' is undefined

那么,是loopinclude d模板中不可用?这是设计吗?我是如何组织我的模板以避免这种情况发生的?

编辑好吧,我想出了一个解决办法,在for循环之前,我包括我的模板,我做

{% set post_index = loop.revindex %} 

,并使用post_index后模板中。不理想,但似乎是唯一的方法。尽管如此,我仍然想知道你的解决方案。其他

编辑2有一两件事,我能够访问include d模板内post变量,而不是loop变量。

回答

5

如果可能与{% with %}声明。

试试这个:

{% with %} 
    {% set loop_revindex = loop.revindex %} 
    {% include ... %} 
{% endwith %} 

而是在包括模板使用loop.revindex的,使用loop_revindex

+0

是的,将其设置为另一个局部变量是解决方案,我发现后立即问题。看到我的编辑问题。虽然没有要求'与'。不知道用''也是,谢谢你的提示:) – 2012-01-11 12:14:11

1

另一种选择是通过设置一个局部变量来整个loop变量传递到包括模板loop

{% for post in posts %} 
    {% set post_loop = loop %} 
    {% include ["posts/" + post.type + ".html", "posts/default.html"] %} 
{% endfor %} 

这使您可以访问所有的loop的属性,而且,对我来说,使它在包含的模板中更清楚变量是什么。