1

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

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

我的用例是我首先从 SQL 数据库中提取一些数据,然后调用pweave.pweave()使用该数据填充模板。目前我正在通过编写一个中间文件然后将其加载到模板的序言中来做到这一点。我想将其作为全局范围的一部分传入。我尝试global在模板中声明一个变量,但这似乎不起作用;我不断收到异常NameError

4

1 回答 1

3

这可以按如下方式完成:

在调用脚本中:

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)%>

这将打印“foo 的值是 bar”。

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

exec compiled in Pweb.globals

您可以在Python 文档中获得更多信息。

于 2014-07-07T08:49:54.710 回答