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 项目进行模块划分的标准方式,尤其适用于多人协作或功能拆分明确的项目。