【问题标题】:Using a global variable in Pweave template在 Pweave 模板中使用全局变量
【发布时间】:2014-08-27 14:48:48
【问题描述】:

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

是否可以反其道而行之?,即让模板在调用脚本中引用全局变量?

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

【问题讨论】:

    标签: python pweave


    【解决方案1】:

    这可以按如下方式完成:

    在调用脚本中:

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

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 2019-05-25
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多