テンプレートに存在しない変数を渡すと、jinja2 が例外を発生させる方法はありますか?
PS: これは、変数がテンプレートに存在するが渡されない場合に例外を発生させることとは異なります (または反対です)。このために、「undefined=StrictUndefined」を使用します
テンプレートに存在しない変数を渡すと、jinja2 が例外を発生させる方法はありますか?
PS: これは、変数がテンプレートに存在するが渡されない場合に例外を発生させることとは異なります (または反対です)。このために、「undefined=StrictUndefined」を使用します
jinja2.Environment をロードするときは、「undefined」パラメーターを「jinja2.StrictUndefined」に設定します。例:
env = jinja2.Environment(loader=<someloader>, undefined=jinja2.StrictUndefined)
レンダー例外をキャッチして調べて、何が欠けていたかを確認できます
編集あなたの質問全体を読んでいただければ助かります。:)
多分これはあなたを助けるかもしれません https://jinja.palletsprojects.com/en/2.11.x/api/#the-meta-api
>>> from jinja2 import Environment, meta
>>> env = Environment()
>>> ast = env.parse('{% set foo = 42 %}{{ bar + foo }}')
>>> meta.find_undeclared_variables(ast)
set(['bar'])