2012-01-11 136 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的屬性,而且,對我來說,使它在包含的模板中更清楚變量是什麼。