2017-09-12 13 views
1

wagtailでブロックをレンダリングするには、次の非常に簡単なステートメントがあります。Django Wagtail 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によって呼び出されたテンプレートで、次のエラーをスローします。セキレイのinclude_blockのドキュメントは、変数と呼ばれるテンプレートに受け継がれ得ることを述べているので

'block' is undefined 

これは本当に意味がありません。

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

blockは受け継がれないとなる可能性があることを確かに驚くべきことである私は、明示的に変数を渡すために、次の文を持っているが、それはまだ動作しません、

{% include_block block with context %} 

答えて

2

つまり、ブロックテンプレートでは、ブロック値は変数valueとしてアクセス可能であると言われています(6を参照してください)。 StreamField template renderingセクションの第段落)。

+0

ありがとうございました!私はドキュメントでそれを混乱させた。私はその価値がブロックの一部であると思った。 structブロックとブロックを持つStreamブロックとはちょっと混乱します... –

+0

可能性のあるバグを少し見て、[documentation](http://jinja.pocoo.org/docs/2.9/templates/# import-context-behavior)は、Jinjaの '2.0'では、"インクルードされたテンプレートに渡されたコンテキストにテンプレートに定義された変数が含まれていませんでした "と述べています。これはおそらく '2.1'で修正されました。インストールしたJinjaのバージョンを確認できますか?必要があればバグを報告します。 –

+0

ありがとうございます。私はJinja 2.9を使用しています。これが私がとても困惑した理由です。 –

関連する問題