gpt4 book ai didi

python - Flask 蓝图的注册顺序

转载 作者:太空狗 更新时间:2023-10-30 01:37:06 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题(对于有 flask 经验的人来说可能并不奇怪)。

我有一个在 Google App Engine 的 dev_appserver.py

上下文中运行的 Flask 应用程序

我的 flask 应用程序中有一个蓝图

# rest_server.py

rest_api = Blueprint('rest_api', __name__)
app = Flask(__name__)
app.register_blueprint(rest_api, url_prefix='/api') # [1] DOESN'T WORK

@rest_api.route("/")
def hello():
return "Hello World"

app.register_blueprint(rest_api, url_prefix="/api") # [2] WORKS AS EXPECTED

我的 app.yaml

中有以下内容
-url: "/api/.*"
script: rest_server.app

当我在位置 [1] 注册蓝图时点击 localhost:8080/api/ 时,我收到一条错误消息,指出没有匹配的端点。

但是,当我在 [2] 处注册 bluerpint 时,装饰器 之后的任何位置都有效。

是否需要在所有装饰器之后注册蓝图?

最佳答案

是的,只有在声明所有路线后才需要注册蓝图,至少如果您想使用这些路线。 (如果不介意路由不可用的话,注册蓝图后声明新路由其实没什么问题。)

如果您想知道原因:基本上,蓝图 url 规则仅在调用 Flask.register_blueprint 时才在应用程序上注册。如果您在注册蓝图后添加路由,它们只会在注册蓝图时添加到待办事项列表中 (Blueprint.deferred_functions),它们不会追溯添加到任何现有的应用程序中蓝图是过去注册的。

关于python - Flask 蓝图的注册顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730312/

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