flask接口动态注册--依赖于蓝图
作者:互联网
# 实现代码 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 │ │
标签:blueprint,__,py,views,flask,蓝图,--,模块,path 来源: https://www.cnblogs.com/chenmotongxue/p/16394418.html