flask使用Blueprint进行多模块应用的编写
来源:互联网 发布:美工包括哪些 编辑:程序博客网 时间:2024/05/24 15:36
flask使用Blueprint进行多模块应用的编写
1、blueprint
2、分模块后的结构
3、业务模块
4、运行
5、总结
1、blueprint
在使用flask进行一个项目编写的时候,可能会有许多个模块,如一个普通的互联网sass云办公应用,会有用户管理、部门管理、账号管理等模块,如果把所有的这些模块都放在一个views.py文件之中,那么最后views.py文件必然臃肿不堪,并且极难维护,因此flask中便有了blueprint的概念,可以分别定义模块的视图、模板、视图等等,我们可以使用blueprint进行不同模块的编写,不同模块之间有着不同的静态文件、模板文件、view文件,十分方便代码的维护和管理,下面就是使用blueprint来进行上面用户管理、部门管理、账号管理模块的模拟编写,只涉及到api层面上,模板文件和静态文件就不写在上面了。
2、分模块后的结构
在进行分模块编写接口之后,以前提供的接口就不能写在一个views.py文件之中,具体结构如下所示:
dept: 这是部门管理模块,views是相应的接口文件。
user: 这是用户管理模块,同上,views是用户管理的相应接口。
其他的和之前的类似。
3、业务模块
3.1 dept模块
- 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在这里,我们定义了dept blueprint对象,便于在views.py文件中应用,替代Flask对象。
主要的接口
views.py:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
提供两个接口,一个接口用于查询特定的部门,一个接口用于返回部门列表,dept对象我是模拟的部门数组,没有用models.py文件中dept对象,主要是在这一节中没有使用相应的orm框架,因此就没写相应的model,这个在随后中会涉及到。
另外一个,我在获取depts接口时,用的就不是jsonify方法了,而是内置的json.dumps转换为json对象,我之所以这样写,是因为jsonify如果要返回数组对象的话,必须要相应的对象实现一个方法返回json数据,或者将这个对象转成字典类型,然后循环遍历这个对象,比较麻烦,因此这里我就直接使用json.dumps来进行转换了。
在相应的路由注解上,我使用的就是dept.route,因此在定义了为dept的blueprint对象后,这里的作用相当于当初定义的app Flask对象,但其实是进行了view层的路由后,最终还是注册到了app上面,在代码层面上实现了不同模块之间的隔离。
3.2、user模块
user模块功能和代码大部分和dept相同,这里仅仅只贴出代码,不再描述具体的功能。
- 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
views.py:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
3.3、run.py文件
最终Blueprint对象在run文件之中进行注册,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
app.register_blueprint在这里进行了Blueprint对象的注册和路由,在这里还有许多用法,如制定静态文件夹和模板文件夹等等,这些可以参考以下自己学习:
使用蓝图的模块化应用
其他的我就没有再讲了,config.py和manager.py在这些简单的应用中还无需用到,讲到后面再来说这些的作用。
4、运行
启动run文件,进行运行,请求
- 1
结果:
第一个接口请求成功:
请求第二个接口:
- 1
接口同样请求成功,在这里dept模块就不去请求,结果是类似的。
5、总结
Blueprint其实本身只是对view上的接口进行了注册,然后整体挂载在app上,Blueprint本身的目的就是组织多模块的平行共存,避免直接在app上注册view,其实更多的只是方便开发和代码的维护,因为最终所有的views上的接口都仍然是直接挂载在app上,其实对应整个应用来说,没有什么明显的区别。
Flask 中的Blueprint不是一个可插拨的应用,因为它不是一个真正的应用,而是一套可以注册 在应用中的操作,并且可以注册多次。
同时在这里,我们不能使用多个flask对象来管理和注册,因为这样会导致每个flask对象都有一个自己的配置,不好管理。
使用Blueprint,应用会在Flask层中进行管理,共享配置,通过注册按需改变应用 对象。Blueprint的缺点是一旦应用被创建后,只有销毁整个应用对象才能注销lueprint。
综合以上,简单来说,Blueprint就是通过url找到view的一套机制,并没有太过于复杂的逻辑。
- flask使用Blueprint进行多模块应用的编写
- 使用Flask快速开发WEB应用-第二篇:Blueprint模块的应用
- Flask 用Blueprint实现模块化的应用
- 通过Blueprint进行模块化的Flask应用开发[转]
- 通过Blueprint进行模块化的Flask应用开发[转]
- python flask,file structure ,blueprint简单应用
- Flask-Blueprint
- flask-Blueprint
- flask 中的蓝图 blueprint 的理解
- flask 中的蓝图 blueprint 的理解
- [API]使用Blueprint来高雅的编写接口文档
- [API]使用Blueprint来高雅的编写接口文档
- [API]使用Blueprint来高雅的编写接口文档
- flask扩展模块flask-sqlachemy 的使用---mysql数据库
- flask扩展模块flask-sqlachemy 的使用---mysql数据库
- flask扩展模块flask-sqlachemy 的使用---mysql数据库
- flask Blueprint用法
- Flask之Blueprint
- git pull和git pull -- rebase
- 调用EntityManager出现The import javax.persistence cannot be resolved
- 配置文件保存在exe所在目录
- Books CodeForces
- Redis常用命令之排序函数
- flask使用Blueprint进行多模块应用的编写
- 邻接表(c语言)
- 基于Hexo搭建博客
- 错误解决】The prefix "context" for element "context:component
- How does Android-x86 work? --- Chih-Wei Huang answer the problem.
- Struts2_自定义转换器
- 读《大话设计模式》学习小结(一)装饰器模式
- 常见面试题
- Harmonic Number (II) LightOJ