2010-06-10 188 views
12

在Jinja2中,如何访问与include合并的文件中的已分配变量(即{% set X=Y %})?在Jinja2中导入/包含分配的变量

我期望工作情况如下给出了两个Jinja2的文件:

A.jinja

Stuff 
{% include 'B.jinja' -%} 
B has {{ N }} references 

B.jinja

{% set N = 12 %} 

我期望A.jinja,当编译的Jinja2 ,会产生以下输出:

Stuff 
B has 12 references 

然而,它产生:

Stuff 
B has references 

我会非常感谢对于任何输入关于如何访问的Jinja2变量,如上面N,包含文件的文件在N是组。

谢谢您的阅读。

布赖恩

回答

19

includeimport之间的差异,但你应该能够做到这两点。

  • include 'B.jinja只是呈现模板并忽略其中的任何变量赋值或宏。
  • import 'B.jinja' as B,进口B好像它是一个模块,所以你必须输出B.N
  • from 'B.jinja' import N直接输入变量N

将您的导入线更改为最后一个选项,看看是否解决了问题。如果您需要更多帮助,请参阅the documentation

+1

最后一行不应该是'from'B.jinja'import N'吗? – smac89 2017-08-21 22:57:51