Flask的路线装饰器什么时候执行?

时间:2017-05-02 11:00:26

标签: python flask python-decorators

Flask' decorator方法执行时route是什么时候?具体来说,我想知道何时执行self.add_url_rule()

from flask import Flask
app = Flask(__name__)
@app.route("/")
def root_of_app():
    load_root_of_app()

首次导入包含add_url_rule的模块时,或者首次通过网络请求调用root_of_app时,会执行root_of_app吗?

以下是route功能的来源:

def route(self, rule, **options):
    def decorator(f):
        endpoint = options.pop('endpoint', None)
        self.add_url_rule(rule, endpoint, f, **options)
        return f
    return decorator

1 个答案:

答案 0 :(得分:3)

您可以通过向route装饰器添加打印语句来自行验证。

调用route时,它会构建一个装饰器。然后通过调用该装饰器将其应用于视图。这些都发生在导入时,因为导入执行模块级代码。

使用@app.route()注册视图,直到第一个请求才推迟。 blueprint 版本的route将延迟到蓝图在应用程序上注册,这也会在第一个请求之前发生。

相关问题