gpt4 book ai didi

python - 在 Cherrypy 中动态创建页面定义

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:26 26 4
gpt4 key购买 nike

我一直在查看 CherryPy 文档,但无法完全理解我想做什么。我怀疑它可能更像是 Python 的东西而不是 CherryPy 的东西......

我现在的类(class)看起来像这样:

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

最佳答案

class WebManager:
def default(self, action, **kwds):
return managerUtils.runAction(action, kwds)
default.exposed = True

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

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

希望对您有所帮助!

关于python - 在 Cherrypy 中动态创建页面定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com