Я просматривал документацию 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.")
http://webserver/?B&kwds
иhttp://webserver/B?kwds
. - person nmgeek   schedule 14.04.2015