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