gpt4 book ai didi

python - 为 Flask 中的所有蓝图注册全局请求处理程序

转载 作者:行者123 更新时间:2023-12-01 01:06:22 28 4
gpt4 key购买 nike

我正在尝试注册before_requestafter_request Flask 中所有路由(在所有蓝图中)的处理程序。

注册单个蓝图很容易:

main = flask.Blueprint('main', __name__)

@main.before_request
def do_something():
flask.request.my_value = 'my_value'

但是,我不知道如何为所有蓝图实现此目的。具体来说是因为我使用工厂函数来创建我的应用程序:

def create_app():
from my_package.blueprints.main import main
from my_package.blueprints.user import user

app = Flask(__name__)
app.register_blueprint(main)
app.register_blueprint(user)

return app

理想情况下,我希望将所有中间件功能保存在一个单独的文件中,其中包含类似 root 的内容。或super蓝图。或者,我想我可以迭代 app 上的所有蓝图。对象并在每个对象上注册这些处理程序,但这似乎是多余的。

最佳答案

方法1

您可以使用 before_app_requestafter_app_request 在任何蓝图上注册全局处理程序:

@any_bp.before_app_request
def before_all_request:
pass

方法2

使用 before_requestafter_request,但在应用程序工厂中直接为 app 注册请求处理程序:

def create_app():
app = Flask(__name__)

@app.before_request
def before_all_request:
pass

return app

关于python - 为 Flask 中的所有蓝图注册全局请求处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55308524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com