(虽然这个问题是专门针对烧瓶的,但可以根据标题概括)
{cdm>试图在Flask中使用。但是,Flask应用程序初始化为实例变量,即self.server
被设置为应用程序。这意味着我不能使用decorator,因为self
在decorated方法之外是未定义的。我希望能够做到以下几点:
class MyClass:
def __init__(self):
self.server = Flask(__name__)
@self.server.route('/')
def home():
return '<h1>Success</h1>'
这个问题有什么解决办法吗?非常感谢任何帮助!在
您可以在
__init__
方法的上下文中定义函数。然后,要使函数能够正常调用,请将home
成员设置为它的值。在您应该使用} method ,而不是使用
self.server
对象的^{route()
修饰符,如下所示:此模式允许您将路由处理程序定义为类上的方法,并且更易于阅读,因为您可以在一个块中看到所有的URL规则。在
我不确定您的总体用例是什么,但是最好不要在类中嵌入app对象,而是使用Flask的Pluggable Views模块。这将允许您将视图清晰地定义为继承自烧瓶.视图.视图. 示例:
对于这个小例子来说,这无疑是更多的代码,但是这给了您更大的灵活性,可以用它们自己的路由来定义其他类或函数,并且可以考虑MethodViews,它为定义多个HTTP方法并将它们与单个类相关联提供了一个很好的结构。在
相关问题 更多 >
编程相关推荐