我有一个Controller页面模板和一个处理动作的Controller Python脚本。很高兴我能够通过网络添加这个表单和动作脚本,所以每次我对代码稍作修改时我都不需要构建并重新启动Plone实例。问题是我的python脚本应该构建一个内容对象列表作为一个数组,然后通过POST作为REQUEST主体发送到远程服务器的JSON数组与另一个服务器共享对象。我有一个名为arrayOfObjects的数组应该看起来像“[{'param1':val1,'param2':val2},{'param1':val3,'param2':val4}]”。
import json
...other stuff...
sJSON = json.dumps( arrayOfObjects )
上面的代码可以在标准的python解释器中使用,但是Plone限制了许多模块在ZMI中管理的通过Web的Python脚本的使用。这是一个很好的安全功能,但我希望继续通过网络开发脚本,并在完成所有工作后将其移动到我的附加产品中的文件系统存储中。我听说AccessControl包的allow_module功能应该启用导入,但听起来好像你仍然可能必须让它在文件系统上运行。有没有办法同时通过Web脚本编辑Python脚本和JSON模块,这对我正在构建的功能至关重要?提前感谢您的任何信息!
PS-我导入json模块时看到的权限不足屏幕(预期的行为 - 没有错误)
答案 0 :(得分:4)
某处,在常规python代码中,添加以下内容:
from AccessControl import allow_module
allow_module('json')
将模块列入白名单。是的,出于明显的安全原因,此具有从基于文件系统的Python运行。