Python 从Jinja模板导入宏,而不执行模板内容
我想导入一个Jinja模板,它也有顶级内容,但不执行内容本身。例如: 带有_macros.html的模板_: 导入Jinja模板时,模板的内容不包括在内,但仍在执行,这意味着任何不存在的变量都会导致错误,以及执行不需要的代码时发生的其他错误 有没有一种方法可以导入Jinja模板而不执行其内容Python 从Jinja模板导入宏,而不执行模板内容,python,jinja2,Python,Jinja2,我想导入一个Jinja模板,它也有顶级内容,但不执行内容本身。例如: 带有_macros.html的模板_: 导入Jinja模板时,模板的内容不包括在内,但仍在执行,这意味着任何不存在的变量都会导致错误,以及执行不需要的代码时发生的其他错误 有没有一种方法可以导入Jinja模板而不执行其内容 我想这样做,而不是将宏完全分解到另一个文件中,因为这样可以更整洁地组织应用程序中的模板代码。不,没有办法这样做。Jinja模板编译为Python模块。导入模块时执行顶层代码。这同样适用于模板 {% macr
我想这样做,而不是将宏完全分解到另一个文件中,因为这样可以更整洁地组织应用程序中的模板代码。不,没有办法这样做。Jinja模板编译为Python模块。导入模块时执行顶层代码。这同样适用于模板
{% macro link(text, url) %}
<a href='{{ url }}'>{{ text }}</a>
{% endmacro %}
{% for text, url in {'Google': 'http://google.com', 'Stack Overflow': 'http://stackoverflow.com'}.items() %}
{{ link(text, url) }}
{% endfor %}
{% import "template_with_macros.html" as macros %}
{{ macros.link("Homepage", "/") }}