python - 在 Plone 附加组件中包含 Python 脚本

标签 python scripting plone add-on

我有一个 Plone 附加组件(通过 Zope 创建),其中包括 Javascript 和页面模板文件。一些 Javascript 函数需要调用 Python 脚本(通过 AJAX 调用)——如何在不通过 ZMI 的情况下将这些 Python 脚本包含在我的插件中?

我有一个“浏览器”文件夹,其中包含一个“configure.zcml”文件——注册资源目录和我的模板文件。我假设注册 python 文件与此类似,或者类似于 Javascript 文件的注册方式,但也许不是?

最佳答案

您将 python 注册为内容对象上的 View :

<browser:page
 for="**INTERFACE**"
 name="**name**"
 class="**class**"
 attribute="**method**"
 permission="zope2.View"
 />

其中 INTERFACE 是您要查看的对象的界面, name 是 View 名称(即http://path-to-object/@@name), class 是定义脚本的 Python 类,attribute 是该类的可选方法(默认为 __call __).严格来说,我认为 class 是任何可调用的,不一定是类的方法。

这是我用于 kss 操作的脚本(与编写您自己的 AJAX 脚本几乎相同)- 您的类可能需要从 BrowserView 继承(PloneKSSView 是 KSS View 的专门化):

<browser:page
 for="Products.VirtualDataCentre.interfaces.IDDCode"
 name="getTableColumns"
 class="Products.VirtualDataCentre.browser.DDActions.DDActions"
 attribute="getTableColumns"
 permission="zope2.View"
 />

IDDCode 是我需要查看的内容类型,DDActions.py 有:

from Products.Five import BrowserView
from plone.app.kss.plonekssview import PloneKSSView
class DDActions(PloneKSSView):
    def getTableColumns(self, table, currValue, currLabel):
        columns = self.context.getColumnNames(table)
        for (field, curr) in [('valueColumn', currValue), ('labelColumn',currLabel)]:
            self.replaceSelect(field, columns, (curr or self.context[field]))

关于python - 在 Plone 附加组件中包含 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6205376/

相关文章:

python - 根据时间戳选择并用零更新时间戳

python - pickle : Why are they called that?

linux - Sendmail 命令将文件作为电子邮件正文和附件发送

plone - 重命名 Plone 用户帐户

plone - 在 Plone 中查看我的 xdv 更改时出现问题

Python,如何在响应中访问 unicode 变量名称

python - 如何单击包含 pdf 内容的第一个链接

c++ - 从 python 脚本调用非返回 python 函数

php - 是否可以轻松地从另一个程序控制 mplayer?

export - Plone (XLIFF) 上的批量导入/导出翻译?