1.为了避免在每个视图函数中都使用重复的代码,Flask提供了注册通用函数的功能,注册的函数可在请求被分发到视图函数之前或之后调用。
请求钩子使用修饰器实现。Flask支持以下4种钩子:
- before_first_request:顾名思义,注册一个在处理第一个请求之前运行的函数。
- before_request:注册一个在处理请求之前运行的函数。
- after_request:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
- teardown_request:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。
在请求钩子函数和视图函数之间共享数据一般使用上下文全局变量g。
2.源码
def before_request(self, f):
"""Registers a function to run before each request."""
self.before_request_funcs.append(f)
return f