2017-09-12 17 views
1

我有以下非常簡單的語句來呈現w blocks中的塊。Django W Jin Jinja2 include_block標記不傳遞變量

{% for block in blocks %} 
    {% include_block block %} 
{% endfor %} 

for循環與模板標記include_block一樣工作和迭代塊。然而,變量'block'在include_block執行的模板中不可訪問。

{% set background_image = block.background_image.image %} 

在由include_block調用的模板中調用的上述語句會引發以下錯誤。

'block' is undefined 

這並沒有什麼意義,因爲W's的include_block文檔聲明變量會傳遞到被調用的模板中。

http://docs.wagtail.io/en/v1.9/advanced_topics/jinja2.html#include-block

,我有以下聲明,以變量明確地傳遞,但它仍然無法正常工作,

{% include_block block with context %} 

回答

2

這實在是令人驚訝的是block沒有獲得通過,而且可能構成一個錯誤(編輯:見下面的評論關於這個問題的進一步討論)

這就是說,在一個塊模板中,塊值可以作爲變量value(見6 StreamField template rendering部分的第th段)。

+0

謝謝!我在文檔中對此感到困惑。我認爲價值會成爲一個塊的一部分。它與具有結構塊和具有塊的流塊有些混淆...... –

+0

進一步查看可能的錯誤,[documentation](http://jinja.pocoo.org/docs/2.9/templates/# import-context-behavior)用Jinja'2.0'聲明,「傳遞給包含模板的上下文不包含模板中定義的變量」。這大概固定在'2.1'中。你能確認你安裝了哪個版本的Jinja嗎?如果需要的話,我會考慮提交一個bug。 –

+0

謝謝。我正在使用Jinja 2.9。這就是爲什麼我很困惑。 –