私はCherryPyのドキュメントを見回してきましたが、私がやりたいことについて頭を悩ませることはできません. 私はそれがCherryPyのものよりもPythonのものかもしれないと思う...
私の現在のクラスは次のようになります。
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 には、次のような dict があります。
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
これを行う方法のアイデアはありますか?
1つの答えは、次のことを提案しました:
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.")