gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:23 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com