Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask:如何在蓝图中的每个路由之前运行方法?_Python_Flask_Decorator - Fatal编程技术网

Python Flask:如何在蓝图中的每个路由之前运行方法?

Python Flask:如何在蓝图中的每个路由之前运行方法?,python,flask,decorator,Python,Flask,Decorator,我想让我的烧瓶蓝图在执行任何路由之前始终运行一个方法。与使用自定义装饰器装饰蓝图中的每个路由方法不同,我希望能够执行以下操作: def my_方法(): 做事 截面=蓝图(‘截面’,_名称_) #将my_method()注册为在所有路由之前运行的安装方法 section.custom\u setup\u方法(my\u方法()) @段.路线('/two') def route_one(): 做事 @段.路线(“/一”) def route_two(): 做事 然后基本上/section/one和

我想让我的烧瓶蓝图在执行任何路由之前始终运行一个方法。与使用自定义装饰器装饰蓝图中的每个路由方法不同,我希望能够执行以下操作:

def my_方法():
做事
截面=蓝图(‘截面’,_名称_)
#将my_method()注册为在所有路由之前运行的安装方法
section.custom\u setup\u方法(my\u方法())
@段.路线('/two')
def route_one():
做事
@段.路线(“/一”)
def route_two():
做事
然后基本上
/section/one
/section/two
都将在执行
route\u one()
route\u two()中的代码之前运行
my\u method()


有什么方法可以做到这一点吗?

您可以在请求之前使用

@section.before_request
def before_request():
    do_stuff

您可以使用装饰器绘制蓝图。像这样:

@section.before_request
def my_method():
    do_stuff

这会自动注册要在属于blueprint的任何路由之前运行的函数。

为什么不首先以装饰器的身份编写函数?@SamRedway可以工作,但随后必须为每个路由添加装饰器。如果在应用程序或蓝图级别使用
before\u request()