如何在Jinja2中包含带有FunctionLoader的宏/其他模板?

Jon*_*sco 5 jinja2

我正在尝试使用沙盒Jinja2环境来处理模板自定义.

我已经尝试过使用DictLoader和FunctionLoader,但是仍然遇到类似的问题......我现在主要关注的是FunctionLoader.

我无法管理includeimport另一个模板(包含宏).永远不会为引用的模板调用FuctionLoader指定的"加载"函数.

我试过没有运气:

  • 只是期望导入会使用基本的'import'和'include'语法命中加载器
  • 将加载器传递到上下文中,看看它是否会以这种方式拉动
  • 将模板的字典传递到上下文中,也希望它可以引入
  • 还有一些东西,我忘记了所有这些

我确信必须有一种方法来支持这一点 - 有人能指出我正确的方向吗?

Jon*_*sco 15

导入语法必须使用带引号的字符串.

坏:

{% import utils %}
{% import utils.macros as macros %}
{% from utils.macros import macro_1 , macro_2 %}
Run Code Online (Sandbox Code Playgroud)

好:

{% import "utils" as utils %}
{% import "utils.macros" as macros %}
{% from "utils.macros" import macro_1 , macro_2 %}
Run Code Online (Sandbox Code Playgroud)

引用的字符串被传递到FunctionLoader或用作键的键DictLoader

  • 作为旁注:官方文档中根本没有提到这种行为. (3认同)