Plone从login_next脚本调用python函数

时间:2011-09-12 09:24:01

标签: python plone zope

我有我的Plone实例设置。我试图从我的login_next脚本调用自定义python脚本函数。

我该怎么做?

比如说:

Custom_print.py

def disp():
   return 'Hello world'

我如何在login_next脚本中调用此disp()?

3 个答案:

答案 0 :(得分:1)

因此,这个Custom_print.py位于portal_skins中可用的皮肤目录中,并在默认皮肤中使用?换句话说:访问http://your-plone-site/Custom_print会返回字符串'Hello world'?

然后,您可以自定义login_next脚本(在portal_skins的自定义映射中或在文件系统上的自己的皮肤中)并在那里调用context.Custom_print()

答案 1 :(得分:1)

这取决于你把脚本放在哪里:

  • 如果您在皮肤目录中有该脚本,则必须使用Acquisition(正如毛里求斯所说):context.Custom_print()。请注意Acquisition's pitfalls
  • 如果是文件系统模块,你只需“使用它”,如下所示: import mymodule; mymodule.Custom_print()

答案 2 :(得分:1)

在旧的Zope2 / CMF portal_skins世界中,portal_skins / * / foo.py对象被视为,就像方法本身一样。 IOW,没有必要用def func_name()包装它的内容,因为skin对象只需通过context.foo()遍历它就可以“调用”。没有导入或任何其他正常的python东西。

虽然我们试图尽可能快地摆脱这些东西并回到更多的pythonic理智,但login_next仍然是portal_skins脚本,所以使用portal_skins脚本来做你想做的事情是合适的。所以你的login_next脚本可以自己做return "Hello World"