43

テンプレート内のすべての変数とブロックのリストを取得しようとしています。変数を見つけるために独自のパーサーを作成したくありません。次のスニペットを使用してみました。

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('gummi', 'templates'))
template = env.get_template('chat.html')

template.blocksキーがブロックであるdictは、ブロック内のすべての変数を取得するにはどうすればよいですか?

4

5 に答える 5

70

誰も質問に答えていないので、私は答えを見つけました

from jinja2 import Environment, PackageLoader, meta
env = Environment(loader=PackageLoader('gummi', 'templates'))
template_source = env.loader.get_source(env, 'page_content.html')
parsed_content = env.parse(template_source)
meta.find_undeclared_variables(parsed_content)

これは実行時に実行されないため、宣言されていない変数のリストが生成され、すべての変数のリストが生成されます。

注: これにより、 および を使用してインクルードされた html ファイルが生成されincludeますextends

于 2011-11-27T08:27:20.807 に答える