Jinja: インクルードタグでブロックオーバーライドを許可すると、予期しない動作が発生します。

作成日 2013年06月10日  ·  5コメント  ·  ソース: pallets/jinja

詳細については、 https: //github.com/mitsuhiko/jinja2/pull/84#issuecomment-19208621を参照してください。

最も参考になるコメント

異なるテンプレートタグ名を使用するだけで、インクルードの現在の実装の互換性を維持しながら、ブロックオーバーライドでインクルードを提供するのは非常に簡単なはずです。

{% include 'file.jinja2' %}

含まれているブロックをオーバーライドしませんが、次の場合に使用します。

{% include_override 'file.jinja2' %}

同じことをします。

Jinja2がほとんどの機能で非常に強力であり、実際にはPythonだけでなく、周りで最高のテンプレートエンジンの1つであることを知っているので、そのような機能がそれほど長い間実装されていないのは非常に奇妙です。

特に、実際のパッチがすでに実行されている場合。

全てのコメント5件

元に戻され、次のメンテナンスリリースに入る予定です。

これは修正されたことがありますか? 私はまだこのバグを経験しています(#169と#84と同じ)。

バグはまだ存在します。

このバグは修正されました。 もともと#84はincludeタグにブロックオーバーライドを導入し、後でマージされましたが、その後、いくつかのテンプレート設定(複製されたブロックでの再帰)が壊れたため、この問題が発生しました。

テンプレートの動作は変更しないでください。 @ mitsuhikoはパッチを元に戻します。

ブロックオーバーライドをサポートしたい場合は、新しい問題を作成してください。おそらく、実用的な解決策を提案してください。

異なるテンプレートタグ名を使用するだけで、インクルードの現在の実装の互換性を維持しながら、ブロックオーバーライドでインクルードを提供するのは非常に簡単なはずです。

{% include 'file.jinja2' %}

含まれているブロックをオーバーライドしませんが、次の場合に使用します。

{% include_override 'file.jinja2' %}

同じことをします。

Jinja2がほとんどの機能で非常に強力であり、実際にはPythonだけでなく、周りで最高のテンプレートエンジンの1つであることを知っているので、そのような機能がそれほど長い間実装されていないのは非常に奇妙です。

特に、実際のパッチがすでに実行されている場合。

このページは役に立ちましたか?
0 / 5 - 0 評価