我一直在查看 CherryPy 文档,但无法完全理解我想要做什么。我怀疑它可能更像是 Python 的东西而不是 CherryPy 的东西......
我现在的班级看起来像这样:
import managerUtils
class WebManager:
def A(self, **kwds):
return managerUtils.runAction("A", kwds)
A.enabled = True
def B(self, **kwds):
return managerUtils.runAction("B", kwds)
B.enabled = True
def C(self, **kwds):
return managerUtils.runAction("C", kwds)
C.enabled = True
显然这里有很多重复。
在 managerUtils.py 中,我有一个类似于:
actions = {'A': functionToRunForA,
'B': functionToRunForB,
'C': functionToRunForC}
好的,这是一个稍微简单的观点,但我相信你明白了。
我希望能够做类似的事情:
import managerUtils
class WebManager:
def __init__(self):
for action in managerUtils.actions:
f = registerFunction(action)
f.enabled = True
关于如何做到这一点的任何想法?
一个答案建议这样做:
class WebManager:
def index(self, action, **kwds):
return managerUtils.runAction(action, kwds)
index.enabled = True
这回升了,我相信:
http://webserver/?action&kwds
而不是我想要的,即:
http://webserver/action?kwds
当我按照您的建议进行操作时,出现以下 404 错误:
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/cherrypy/_cprequest.py", line 606, in respond
cherrypy.response.body = self.handler()
File "/Library/Python/2.5/site-packages/cherrypy/_cperror.py", line 227, in __call__
raise self
NotFound: (404, "The path '/myAction' was not found.")