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

是否可以相反?也就是说,模板是否在调用脚本中引用了全局变量?

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

最佳答案

可以按以下步骤完成:

在调用脚本中:

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 Documentation.中获取更多信息。

09-06 10:52