所以有點設置。在web2py中,你可以簡單的裝飾控制器的功能,以公開爲JSON的服務,像這樣:如何在web2py模塊中使用json服務時避免多個服務對象?
def call():
return service()
@service.json
def do_something():
return "blah"
然後你就可以(在一個Ajax請求等)調用它像「呼叫/ JSON/do_something」,你會得到「blah」,用json格式化。
您可以在一個模塊中做到這一點的一類,像這樣:
from gluon.tools import Service
service = Service()
class SomeClass(object):
@staticmethod
@service.json
def do_something():
return "blah"
所以在你的控制器,你可以這樣做:
import mymodule
def m_call():
return mymodule.service()
def call():
return service()
@service.json
def do_another_thing():
return "blee"
然後在視圖中,我可以打電話無論是服務,如「m_call/json/do_something」或「call/json/do_another_thing」。這工作,但我有多種方式現在調用json服務。有一個上攻到這一點,該模塊服務不同範圍,但至少在某些情況下,我希望能夠做這樣的事情在我的控制器:
import mymodule
def call():
# This obviously does NOT work, but shows what I WANT to do
service.merge_with(mymodule.service)
return service()
的結果是,我的所有服務(或任何我想要的)暴露在單個服務對象中,並且可以用相同的語法調用,而不管函數在我的應用程序中的位置。有沒有辦法做到這一點?
哇,這很好!謝謝安東尼。是的,從這個例子我看到,更新服務對象的特定子集很容易。 – TheGerm