2

我在 Plone 中获取 Python 脚本以查找外部方法时遇到问题。给定三个不同的对象:

  1. CloneList一个名为(Id 和 Function Name)的外部方法
  2. 使用此成功引用它的 DTML 文档

    <dtml-var "CloneList(PAGE,ORG,STATUS,CGAP_DATA_HOME,BASE)">
    
  3. 通过此引用外部方法的 Python 脚本...

    return CloneList(PAGE,ORG,STATUS,CGAP_DATA_HOME,BASE)
    

DTML 文档工作正常,但 Python 脚本由于某种原因抛出:

Error Value: global name 'CloneList' is not defined

为什么 DTML 模板可以看到 CloneList 很好,而 Python 脚本却不能?

4

1 回答 1

5

DTML 命名空间包含当前上下文,Python 脚本命名空间不包含。Python 代码必须使用显式方法来引用脚本之外的其他对象。

您可以使用该context对象来引用 ZODB 中的其他对象,例如外部方法:

return context.CloneList(PAGE, ORG, STATUS, CGAP_DATA_HOME, BASE)

container您也可以在;上查找名称 wherecontext使用获取链查找名称,container只查看脚本所在的文件夹,加上所有父文件夹。

于 2015-03-19T14:57:07.337 回答