在Pweave模板中使用全局变量

时间:2014-07-07 07:32:59

标签: python pweave

查看pweave here的文档,通过设置returnglobals变量,似乎可以通过调用程序访问模板内生成的任何数据。

是否有可能做相反的事情?,即让模板在调用脚本中引用一个全局变量?

我的用例是我首先从SQL数据库中提取一些数据,然后使用该数据调用pweave.pweave()来填充模板。目前我通过编写中间文件然后将其加载到模板中的前导码中来完成此操作。我想将其作为全球范围的一部分传递给我。我已尝试在模板中声明变量global,但这似乎不起作用;我一直遇到异常NameError

1 个答案:

答案 0 :(得分:2)

这可以按如下方式完成:

在调用脚本中:

from pweave import Pweb
Pweb.globals = { "foo" : "bar" } # This creates a global var `foo` with value 'bar'
w = Pweb("inputfile.tex")        # Generate a Pweb class. We can't just call `pweave()`
w.weave()                        # Equivalent of `pweave()`

在tex模板中:

The value of foo is <%=print(foo)%>

将打印&#34; foo的值为bar&#34;。

奇怪字典的原因是代码使用以下调用来评估您的代码:

exec compiled in Pweb.globals

您可以在Python Documentation.

中获取更多信息