【发布时间】:2012-01-01 01:09:14
【问题描述】:
我正在使用 Flask 和 Python 2.7 编写我的网站后端,但遇到了一些问题。我喜欢使用类来封装我的函数,它让我的事情变得整洁,并帮助我保持一切模块化。不过,我遇到的一个问题是用于路由的装饰器烧瓶不保留 self 变量。我用它来访问它所在类的 loadDb 方法。见下文。任何人都知道为什么会发生这种情况,并且知道我该如何解决这个问题,或者即使有办法解决这个问题?
class Test(object):
blueprint = Blueprint("Test", __name__)
def __init__(self, db_host, db_port):
self.db_host = db_host
self.db_port = db_port
def loadDb(self):
return Connection(self.db_host, self.db_port)
@blueprint.route("/<var>")
def testView(var): # adding self here gives me an error
return render_template("base.html", myvar=self.loadDb().find({"id": var})
【问题讨论】:
-
我怀疑您可能希望在 MethodView 中使用可插入视图。它变得有点难看,因为你不能在一个类中细化多条路线。但是您可以将模型类传递给视图类构造函数,然后每个路由都有一个返回模型类的句柄。这是一种分离视图/模型逻辑的方法。您可以创建一个包含每个视图的更高级别的类,因此您只需实例化一次。但它最终仍会回到添加 add_url_rule 以将所有内容链接回烧瓶。 flask.palletsprojects.com/en/1.1.x/views