2013-03-07 11 views
5

テンプレートのカスタマイズを処理するために、サンドボックスのJinja2環境を使用しようとしています。Jinja2にFunctionLoaderでマクロ/その他のテンプレートを含めるにはどうすればよいですか?

私はDictLoaderとFunctionLoaderの両方を使ってみましたが、同様の問題が続いています...私は現在、FunctionLoaderに関心があります。

別のテンプレート(マクロを含む)をincludeまたはimportにすることはできません。 FuctionLoaderの指定された "load"関数は、参照されるテンプレートに対して決して呼び出されません。 、

  • だけ「を含む」基本的な「インポート」を使用してローダーをヒットしてしまう輸入を期待構文
  • コンテキストにローダーを渡し、それは可能性がある場合は見て:

    は、私は運を試してみましたまた、私は忘れていたすべてが、それはより多くの

  • いくつかのことに引っ張るかもしれない期待して、コンテキストにテンプレートの辞書を渡して、そのよう
  • に引っ張る

これをサポートする方法があるはずです - 誰かが私を正しい方向に向けることができますか?

答えて

15

インポート構文では、引用符付きの文字列を使用する必要があります。

悪い:

{% import utils %} 
{% import utils.macros as macros %} 
{% from utils.macros import macro_1 , macro_2 %} 
グッド

{% import "utils" as utils %} 
{% import "utils.macros" as macros %} 
{% from "utils.macros" import macro_1 , macro_2 %} 

引用符で囲まれた文字列がFunctionLoaderに渡さまたはサイドノートとしてDictLoader

+3

とキーとして使用されます。この動作ではありません公式の文書にはまったく言及されていません。 –

関連する問題