Flask 项目体积逐渐变大时,可以使用 Blueprint 对视图、路由进行模块化拆分。以下是常用结构与示例。


一、项目结构设计

示例结构:

myapp/
├── app/
│   ├── __init__.py
│   ├── views/
│   │   ├── __init__.py
│   │   ├── user.py
│   │   └── admin.py
│   ├── models/
│   │   └── user.py
│   └── utils/
│       └── tools.py
├── run.py

每个模块中使用 Blueprint 注册路由。


二、创建 Blueprint 示例

user.py 为例:

# app/views/user.py

from flask import Blueprint

user_bp = Blueprint('user', __name__, url_prefix='/user')

@user_bp.route('/profile')
def profile():
    return "用户中心"

三、注册 Blueprint

app/__init__.py 中注册:

from flask import Flask
from .views.user import user_bp
from .views.admin import admin_bp

def create_app():
    app = Flask(__name__)
    app.register_blueprint(user_bp)
    app.register_blueprint(admin_bp)
    return app

入口文件 run.py

from app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)

四、访问效果

访问 /user/profile 返回对应内容。

如 admin.py 也定义了 /admin/dashboard 路由,则可按模块区分处理逻辑。


五、url_prefix 与 name 区别

  • url_prefix:控制路由路径前缀
  • Blueprint 名称(第一个参数)可用于反向查找与模板引用

六、小结

Blueprint 是 Flask 项目进行模块划分的标准方式,尤其适用于多人协作或功能拆分明确的项目。