Search code examples
pythonjinja2template-variables

How to get list of all variables in jinja 2 templates


I am trying to get list of all variables and blocks in a template. I don't want to create my own parser to find variables. I tried using following snippet.

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

template.blocks is dict where keys are blocks, how can I get all variables inside the blocks ?


Solution

  • Since no one has answered the question and I found the answer

    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)
    

    This will yield list of undeclared variables since this is not executed at run time, it will yield list of all variables.

    Note: This will yield html files which are included using include and extends.