Cherrypy中动态创建页面定义

2024-10-03 19:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在查看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

显然这里有很多重复。在

在管理工具.py,我有一句话是这样的:

^{pr2}$

好吧,这只是一个稍微简单化的观点,但我相信你明白了。在

我想做些类似的事情:

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.")

Tags: inpyimportselftruereturndefenabled
1条回答
网友
1楼 · 发布于 2024-10-03 19:20:47
class WebManager:
    def default(self, action, **kwds):
        return managerUtils.runAction(action, kwds)
    default.exposed = True

关于为什么这与其他答案不同的两个注释:

  1. .exposed是发布方法的正确属性,而不是.enabled
  2. index方法是唯一一个不允许像“action”这样的位置参数的方法。请改用default方法。在

希望有帮助!在

相关问题 更多 >