Python-скрипт в Zope не может найти имя функции во внешнем методе
У меня проблема с получением скрипта Python в Plone для поиска внешнего метода. Дано три разных объекта:
- Внешний метод называется
CloneList
(Идентификатор и имя функции) Документ 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 - нет?
1 ответ
Пространство имен DTML включает текущий контекст, а пространство имен Python Script - нет. Код Python должен использовать явные методы для ссылки на другие объекты вне скрипта.
Вы можете использовать context
объект для ссылки на другие объекты в ZODB, например, внешний метод:
return context.CloneList(PAGE, ORG, STATUS, CGAP_DATA_HOME, BASE)
Вы также можете посмотреть имя на container
; где context
использует цепочку приобретения для поиска имен, container
только смотрит на папку, в которой находится скрипт, плюс все родительские папки.