ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用Plone Add-on包含Python脚本

2019-07-30 03:58:24  阅读:307  来源: 互联网

标签:add-on python plone scripting


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

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

解决方法:

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

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

INTERFACE是您想要查看的对象的接口,
name是视图名称(即http:// path-to-object / @@ name),
class是定义脚本的Python类,attribute是类的可选方法(默认为__call__).严格来说,我认为class是任何可调用的,不一定是类的方法.

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

<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]))

标签:add-on,python,plone,scripting
来源: https://codeday.me/bug/20190730/1578201.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有