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
│ │
flask接口动态注册--依赖于蓝图的更多相关文章
- SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架
1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...
- Servlet - Upload、Download、Async、动态注册
Servlet 标签 : Java与Web Upload-上传 随着3.0版本的发布,文件上传终于成为Servlet规范的一项内置特性,不再依赖于像Commons FileUpload之类组件,因此在 ...
- 03 flask数据库操作、flask-session、蓝图
ORM ORM 全拼Object-Relation Mapping,中文意为 对象-关系映射.主要实现模型对象到关系数据库数据的映射. 1.优点 : 只需要面向对象编程, 不需要面向数据库编写代码. ...
- Spring之2:Spring Bean动态注册、删除
IoC容器的初始化包括BeanDefinition的Resource定位.载入和注册这三个基本的过程. 一.Resource定位.BeanDefinition的资源定位有resourceLoader通 ...
- RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化
序:RPC就是使用socket告诉服务端我要调你的哪一个类的哪一个方法然后获得处理的结果.服务注册和路由就是借助第三方存储介质存储服务信息让服务消费者调用.然我们自己动手从0开始写一个rpc功能以及实 ...
- Android(java)学习笔记173:BroadcastReceiver之 静态注册 和 动态注册
1. 广播接受者>什么是广播.收音机.电台:对外发送信号.收音机:接收电台的信号. >在android系统里面,系统有很多重要的事件: 电池电量低,插入充电器,sd卡被移除,有电话打出去, ...
- 插件占坑,四大组件动态注册前奏(二) 系统Service的启动流程
转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52203903 前言:为什么要了解系统Activity,Service,BroadCas ...
- JNI动态注册native方法及JNI数据使用
前言 或许你知道了jni的简单调用,其实不算什么百度谷歌一大把,虽然这些jni绝大多数情况下都不会让我们安卓工程师来弄,毕竟还是有点难,但是我们还是得打破砂锅知道为什么这样干吧,至少也让我们知道调用流 ...
- 动态注册broadcast的安全考虑
一.android service通知activity更新方式有1. service 通过广播的形式发送broadcast,向这个activity的内部类发广播的消息来更新界面2. service直接 ...
- Mybatis学习系列(四)Mapper接口动态代理
实现原理及规范 Mapper接口动态代理的方式需要手动编写Mapper接口,Mybatis框架将根据接口定义创建接口的动态代理对象,代理对象的方法体实现Mapper接口中定义的方法. 使用Mapper ...
随机推荐
- JS日期格式化方法 封装
//--------------------------------------------------- // 日期格式化 // 格式 YYYY/yyyy/YY/yy 表示年份 // MM/M 月份 ...
- Linux系统备份与还原——restore还原命令
之前有讲到Linux下的备份工具dump,有备份自然就有还原,而还原备份文件采用的命令则是restore restore命令格式: restore [模式] [选项] 模式: 有四种模式且不能混用,只 ...
- 2022-04-20内部群每日三题-清辉PMP
1.一个项目已经支出350万美元,现在已经完成400万元美元的工作.该项目的计划价值(PV)为800万美元.主题专家(SME)估算还需要600万美元来完成该项目.完成该项目的技术方法不再有效.当前的完 ...
- SQL server 清空数据库所有表
use [数据库名]GOdeclare @sql varchar(8000)while (select count(*) from sysobjects where type='U')>0beg ...
- 记一次ajax文件上传
一个新需求提交页面. 在页面提交的时候,使用的是,先上传文件再上传表单 在这里需要返回表单存储的文件地址,需要上传.所以.在上传文件之后会返回存储的地址. 这里犯的一个错误: 往input 的type ...
- Java基础学习:1、Java基础知识
1.使用最为广泛的Java版本: Java8.Java11 原因:这两个是长期支持版本,扩展支持到2030以及2026年. 2.Java特性 : 面向对象oop.跨平台(class可以在Windows ...
- iClock数据服务器默认账号密码
网络空间资产搜索: shodan 搜索 默认密码 admin/a***n End!!!
- centos7的mysql主从
互为主从关闭两台虚拟机的防火墙1.yum -y install mariadb-server mariadb2.Systemctl start mariadb3.进入配置文件:vi /etc/my.c ...
- js判断变量数据类型typeof、instanceof、Object.prototype.toString.call()、 constructor
JavaScript有4种方法判断变量的类型,分别是typeof.instanceof.Object.prototype.toString.call()(对象原型链判断方法). constructor ...
- QT搭建Ffmpeg开发环境gcc版本
1 先安装qt 解压ffmpeg包 2打开qt创建工程 3 导入头文件和库文件 这里一定要注意gcc版本和库的版本一定要一致 4 添加一下简单的源代码 1 #include <libavcode ...