https://flask.palletsprojects.com/zh-cn/stable/quickstart/
__init__.py | |
__init__.py 中导入子模块并定义为列表 | |
blueprints = [...] 然后在 create_app 中循环注册 |
所以,__init__.py 的这种用途是纯 Python 的,Flask 只是“消费”了你通过 Python 机制准备好的蓝图列表
Blueprint 就是把一组相关的路由(接口)打包成一个“模块”,然后挂到 Flask 应用上
不分模块
所有接口都写在 app.py 里,文件会变得又长又乱
用 Blueprint
每个功能(比如 user、auth、blog)各自一个文件,然后在主程序里注册一下就行
定义一个蓝图(比如 user.py)
from flask import Blueprint
bp = Blueprint('user', __name__, url_prefix='/api/user')
@bp.route('/profile')
defprofile():
return {"name": "Alice"}在主程序里注册它(比如 app/__init__.py)
from flask import Flask
from .api import user # 导入上面那个文件
defcreate_app():
app = Flask(__name__)
app.register_blueprint(user.bp) # 注册
return app启动后访问:/api/user/profile 就能拿到数据
https://gitee.com/kcnf-python/python-flask
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
统一入口:创建应用并启动服务器
"""
from app import create_app
# 创建 Flask 应用实例(声明式注册所有蓝图)
app = create_app()
if __name__ == '__main__':
# 获取主机和端口(可从环境变量读取,默认 0.0.0.0:5000)
host = '0.0.0.0'
port = 5000
debug = app.config.get('DEBUG', False)
app.run(host=host, port=port, debug=debug)
from flask import Flask
from app.config import get_config
from app.api import blueprints # 导入显式声明的蓝图列表
defcreate_app():
app = Flask(__name__)
config_obj = get_config()
app.config.from_object(config_obj)
# 声明式注册:循环注册 blueprints 列表中的每个蓝图
for bp in blueprints:
app.register_blueprint(bp)
print(f"✓ Registered blueprint: {bp.name}")
@app.route('/')
defindex():
return {"message": f"Welcome to {app.config['API_TITLE']}"}
return appfrom flask import Blueprint, jsonify, request
bp = Blueprint('user', __name__, url_prefix='/api/user')
# 模拟用户数据
users_db = {
1: {"id": 1, "name": "Alice", "email": "alice@example.com"},
2: {"id": 2, "name": "Bob", "email": "bob@example.com"},
}
@bp.route('', methods=['GET'])
deflist_users():
"""获取所有用户"""
return jsonify(list(users_db.values()))
@bp.route('/<int:user_id>', methods=['GET'])
defget_user(user_id):
"""获取单个用户"""
user = users_db.get(user_id)
ifnot user:
return jsonify({"error": "User not found"}), 404
return jsonify(user)
@bp.route('', methods=['POST'])
defcreate_user():
"""创建用户"""
data = request.get_json()
new_id = max(users_db.keys()) + 1if users_db else1
user = {"id": new_id, "name": data.get("name"), "email": data.get("email")}
users_db[new_id] = user
return jsonify(user), 201

点下方的“❤”支持下,非常感谢!
