【问题标题】:When does Flask's route decorator execute?Flask 的路由装饰器什么时候执行?
【发布时间】:2017-09-29 21:04:49
【问题描述】:

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

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

是在第一次导入包含root_of_app 的模块时执行add_url_rule,还是在Web 请求第一次调用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

【问题讨论】:

    标签: python flask python-decorators


    【解决方案1】:

    您可以通过将打印语句添加到 route 装饰器来自己验证这一点。

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 2019-06-28
      • 2018-06-05
      • 2021-11-27
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多