如何使用超级块扩展 jinja2 模板,该超级块是同一 Python 脚本中的字符串

how to extend a jinja2 template with a super block that is a string in the same Python script

我不明白如何使用超级块扩展 jinja2 模板,该超级块是同一 Python 脚本中的字符串

示例代码

from jinja2 import Template

hello = """
hello
"""

world = """
{% extends 'hello' %}
world
"""

j2_template = Template(world)
print(j2_template.render())

显然,我想打印“hello world”,但出现错误

TypeError: no loader for this environment specified

我查看了 Jinja2 加载程序文档,但找不到如何将字符串引用为超级块。 任何解决此问题的帮助将不胜感激。

Jinja 不知道 hello 模板在哪里。您需要先删除 {% extends 'hello' %} 并呈现 hello 并将其作为变量插入到字符串模板中。

world = Template("""{} world""".format(Template(hello).render()))
print(world.render())
from jinja2 import Environment, BaseLoader, DictLoader

loader = DictLoader({'hello': '<div>hello html</div>'})
# Need environment dictLoader object to loader
template_env = Environment(loader=loader, cache_size=1000)
template = template_env.from_string("<div>ss  {{name}} {% include 'hello' %} </div>")
dictt = {"name": "sumit"}
parsed_html = template.render(dictt)

# Parsed output in html string

https://jinja.palletsprojects.com/en/3.0.x/api/ link 文档

对我有用