Zope中的Python脚本无法在外部方法中找到函数名称 - python

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

称为CloneList的外部方法(ID和函数名称)
使用此成功引用它的DTML文档

<dtml-var "CloneList(PAGE,ORG,STATUS,CGAP_DATA_HOME,BASE)">

通过此引用外部方法的Python脚本...

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

DTML文档工作正常,但由于某些原因引发了Python脚本:

Error Value: global name 'CloneList' is not defined

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

python大神给出的解决方案

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

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

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

您也可以在container上查找名称。其中,context使用获取链查找名称,而container仅查看脚本所在的文件夹以及所有父文件夹。