# 实现代码
blueprint_d = dict()
dirs = os.listdir(base_dir) # 获取apps路径下所有文件夹列表
for d in dirs:
## 1、遍历模块文件夹
file_path = os.path.join(base_dir, d) # apps/每个模块
## 2、遍历模块下面的*views.py
for cur_path, sub_dirs, file_names in os.walk(file_path):
for file_name in file_names:
if file_name.endswith("views.py"): # apps/模块/views.py
## 3、导入每个模块的views
view_model = importlib.import_module(model_path) # model_path= "apps.模块名称.views"
## 4、获取模块的蓝图对象,记录
for at in dir(view_model): # 枚举当前模块的所有对象(函数、全局变量、类对象)
if at.endswith('_blueprint'):
blueprint_object = getattr(view_model, at) # 从模块读取蓝图对象
blueprint_d[blueprint_object] = cur_path.replace("\\", "/") # blueprint_d[蓝图对象] = 蓝图的api前缀
for blueprint in load_project_blueprint()## 5、注册蓝图
web_app.register_blueprint(blueprint, url_prefix=flask_blueprint_dicts[blueprint]) # 蓝图注册,是蓝图对象
###### 文件结构 #####
# 目录结构
│ app.py # 程序入口
│ manage.py
│ __init__.py
│
├─api_utils # 杂项
│
├─apps # web接口源码
│ │ __init__.py
│ │
│ ├─external # 如下
│ │ information_views.py
│ │ __init__.py
│ │
│ ├─family # 模块名称
│ │ │ data_process.py
│ │ │ main.py
│ │ │ model.py
│ │ │ views.py # 视图函数
│ │ │ __init__.py
│ │ │
│ │ └─__pycache__
│ │ views.cpython-37.pyc
│ │ __init__.cpython-37.pyc
│ │