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

时间:2013-03-07 21:25:30

标签: jinja2

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

我尝试过同时使用DictLoader和FunctionLoader,但仍然遇到类似的问题......我现在最关心的是FunctionLoader。

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

我试过没有运气:

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

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

1 个答案:

答案 0 :(得分:15)

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

为:

{% import utils %}
{% import utils.macros as macros %}
{% from utils.macros import macro_1 , macro_2 %}

好:

{% import "utils" as utils %}
{% import "utils.macros" as macros %}
{% from "utils.macros" import macro_1 , macro_2 %}

引用的字符串会传递到FunctionLoader或用作DictLoader的密钥