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
答案 0 :(得分:3)
您可以通过向route
装饰器添加打印语句来自行验证。
调用route
时,它会构建一个装饰器。然后通过调用该装饰器将其应用于视图。这些都发生在导入时,因为导入执行模块级代码。
使用@app.route()
注册视图,直到第一个请求才推迟。 blueprint 版本的route
将延迟到蓝图在应用程序上注册,这也会在第一个请求之前发生。