You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已注册url_prefix的Flask Blueprint路由为何返回404?

问题分析与解决方案

核心遗漏:路由未被蓝图加载

你的app_views蓝图创建后,index.py里定义的/status路由并没有被蓝图关联上,Flask无法识别这些路由,导致404。常见的解决方式有两种:

方式1:在api/v1/views/__init__.py中导入index.py

在创建蓝图的文件里,导入定义路由的模块,确保路由被注册到蓝图上:

# api/v1/views/__init__.py
from flask import Blueprint

app_views = Blueprint('app_views', __name__)

# 导入index.py,让路由注册到app_views蓝图
from api.v1.views.index import *

注:这里蓝图创建时无需重复设置url_prefix,因为你已经在app.py注册蓝图时指定了/api/v1,重复设置会导致路由路径叠加,引发404

方式2:在api/v1/app.py中导入路由模块

如果不想在蓝图的__init__.py里导入,可以在运行应用的文件中导入路由文件,确保路由被加载:

# api/v1/app.py
from flask import Flask
from api.v1.views import app_views

# 导入index.py,加载路由
from api.v1.views.index import *

app = Flask(__name__)
app.register_blueprint(app_views, url_prefix="/api/v1")

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

额外检查点

  • 确认index.py中的路由确实绑定到app_views蓝图:
    # api/v1/views/index.py
    from api.v1.views import app_views
    
    @app_views.route('/status')
    def status():
        return {"status": "OK"}
    
  • 检查启动应用时是否运行的是api/v1/app.py,避免启动了其他未注册蓝图的Flask实例。

内容的提问来源于stack exchange,提问作者Marlon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:01:06