1
我有一个CherryPy的应用程序是这样的:如何在同一个cherrypy应用程序中使用多个调度程序?
import cherrypy
from controllers import UsersController
class Root(object):
exposed = True
def index(self):
return 'welcome'
if __name__ == '__main__':
root = Root()
root.users = UsersController()
cherrypy.tree.mount(
root,
'/',
{
'/users' : {'request.dispatch' : cherrypy.dispatch.MethodDispatcher()}
}
)
cherrypy.engine.start()
cherrypy.engine.block()
现在我希望用MethodDispatcher()用于提供REST的API /用户资源,我想为“/”的路径默认调度(其中以根通话.index()是预期的)。而不是写自己的RoutesDispatcher()有没有办法实现这一点? (例如,对于'/ users'使用MethodDispatcher(),如'/'使用DefaultDispatcher())?顺便说一句,我得到的错误是'Root' object is not callable
。
谢谢。有效。但是我有一个疑问,'exposed = True'暴露了类,包括index(),对吗?那么为什么默认调度员不能像那样工作?我错过了非常基本的东西吗? – Sangram
明白了。在类级别上设置的= exposed = True是为了调用特殊的方法(比如__call __())。为了暴露一个对象,需要暴露它的index()方法。现在有些清楚,但不完全。 – Sangram