其他分享
首页 > 其他分享> > flask接口动态注册--依赖于蓝图

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