【发布时间】:2015-04-07 18:25:30
【问题描述】:
我找不到让它工作的方法。我认为问题在于如何将类变量或类引用(self)传递给函数。代码类似如下:
def isconnected(classref):
if not classref.serialObject:
raise cherrypy.HTTPError("403 Forbidden")
cherrypy.tools.isconnected = cherrypy.Tool('before_handler', isconnected)
然后在app类中,应该这样使用:
class Controller(object):
def __init__(self):
self.serialObject = None
@cherrypy.expose
@cherrypy.tools.isconnected(self.serialObject)
def serialVRead(self):
# code here
pass
换句话说,我基本上想在调用普通处理程序之前检查资源是否可用。另外,我需要它作为一个工具,因为我还有一些其他方法也想像这样装饰。
此外,我还想知道是否可以使用与引发 HTTPError 异常不同的解决方案来阻止正常处理程序执行。我尝试返回 True 或 False 但没有成功。
请让我知道这是否可行,或者是否有更好的方法来实现这一点。谢谢。
PD。我正在运行 Cherrypy 的最新版本(我认为是 3.3)
【问题讨论】: