如何让全班同学通过Flask路线图装修工?

2024-09-30 22:12:43 发布

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

我正在用Flask和python2.7编写我的网站后端,遇到了一些问题。我喜欢用类来封装我的函数,它使我的东西变得整洁,并帮助我保持所有的模块化。不过,我遇到的一个问题是,flask用于路由的decorators没有保存自变量。我使用它来访问它所在的类的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})

Tags: 函数testselfhostflaskdbreturn网站
1条回答
网友
1楼 · 发布于 2024-09-30 22:12:43

{{1}如果函数中有一个的函数,那么这个函数的作用是相同的。在

让我们看看route:https://github.com/mitsuhiko/flask/blob/master/flask/blueprints.py#L155的代码

它用几个参数调用self.add_url_rule(自身是Blueprint),其中一个参数在函数中。您需要添加一个规则,方法绑定到Testself.testView)的实例,而不是方法本身(Test.testview)。这很棘手,因为decorator是在类创建时执行的,在任何实例存在之前。在

我可以建议的解决方案是在Test的构造器中称自己为blueprint.add_url_rule(即,在第一点上,Test的实例是已知的)。在

相关问题 更多 >