2011-09-12 30 views
0

我有我的Plone實例設置。我想從我的login_next腳本中調用自定義的python腳本函數。Plone從login_next腳本調用python函數

我該怎麼做?

說的如:

Custom_print.py

def disp(): 
    return 'Hello world' 

我怎麼會叫這個DISP()我login_next腳本里面?

回答

1

因此,這個Custom_print.py位於portal_skins中可用的皮膚目錄中,並且用於默認皮膚?換句話說:訪問http://your-plone-site/Custom_print會返回字符串'Hello world'?

然後,您可以自定義login_next腳本(在portal_skins的自定義映射中或文件系統中的自己的皮膚上),並在那裏調用context.Custom_print()

1

這取決於你從哪把這個腳本:

  • ,如果你有一個skin目錄,你將不得不使用採集該腳本(如Maurits的說):context.Custom_print()。請注意0​​。
  • ,如果是文件系統的功能,就只是「用它」像這樣: import mymodule; mymodule.Custom_print()
+0

不,你不能通過導入來「使用它」。 login_next腳本在某些限制下運行,並且只有在文件系統模塊位於模塊白名單上時纔可以導入它。 –

+0

eheh,你是對的...你必須在允許的模塊中使用這個代碼來啓用它:http://wiki.zope.org/zope2/HowToAddModulesToRestrictedCode –

1

在舊的Zope2/CMF portal_skins中的世界,一個portal_skins中/ */foo.py對象視爲等的方法本身。 IOW,沒有必要用來包裝它的內容,因爲皮膚對象將被「調用」,只需通過context.foo()遍歷它即可。沒有進口或任何其他正常的Python的東西。

雖然我們試圖儘快擺脫這種情況,並回到pythonic的理智狀態,但login_next仍然是一個portal_skins腳本,因此使用portal_skins腳本來執行您想要做的事情是適當的。所以你的login_next腳本可以自己做return "Hello World"