Jinja2 api: 如何获取模板的继承模板?
Jinja2 api: how to get the inherited template of a template?
模板文件:
{% extends "base.html" %}
模板加载如下:
env = Environment(loader = FileSystemLoader(['_templates']))
template = env.get_template('test.html')
如何从 template
变量中获取父模板对象,即 "base.html" 的模板?
您可以解析模板源并找到 Extends
节点。详情见AST documentation
from jinja2.nodes import Extends
env = Environment(loader = FileSystemLoader(['_templates']))
template_source = env.loader.get_source(env, 'test.html')[0]
parsed_template = env.parse(template_source)
extends_node = parsed_template.find(Extends)
parent_name = extends_node.template.value
parent_template = env.get_template(parent_name)
模板文件:
{% extends "base.html" %}
模板加载如下:
env = Environment(loader = FileSystemLoader(['_templates']))
template = env.get_template('test.html')
如何从 template
变量中获取父模板对象,即 "base.html" 的模板?
您可以解析模板源并找到 Extends
节点。详情见AST documentation
from jinja2.nodes import Extends
env = Environment(loader = FileSystemLoader(['_templates']))
template_source = env.loader.get_source(env, 'test.html')[0]
parsed_template = env.parse(template_source)
extends_node = parsed_template.find(Extends)
parent_name = extends_node.template.value
parent_template = env.get_template(parent_name)