继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【分享】分层明确高度定制化的 Python Flask MVC

2020-03-06 18:35:505475浏览

编程浪子

2实战 · 15手记 · 3推荐
TA的实战

缘由

    Python在AI,AR VR这块使用越来越广泛。同时在Web方面也有很多成熟的框架。而我本身由于使用Flask 比较多,个人认为就是比较简单,容易入手,可定制化强。这里我将我经过多个项目多次迭代的自认为还可以的框架结构整理出来。方便自己可以更容易创建新项目。

    大家也知道我录制了两门关于python的课程都是基于这个定制化的分层结构的框架开发系统的

目录结构

.
├── api  api存放
│   ├── controllers 所有的C层放在这里
│   ├── interceptors 拦截器相关
├── application.py  封装的Flask的全局变量,包括app,数据库等
├── common 存放公用部分
│   ├── libs  公用方法或者类
│   ├── models 所有的数据库model
├── config 配置文件
│   ├── base_setting.py   基础配置
│   ├── develop_setting.py 开发环境
│   ├── local_setting_demo.py 本地开发环境配置demo
│   └── production_setting.py 生产环境的配置
├── docs 文档存放
│   ├── Mysql.md  所有数据库变更必须在这里记录
├── jobs 定时任务
│   ├── bin
│   └── tasks 所有定时任务都存放在这里
├── router 路由配置入口
│   ├── www.py 对应web的路由配置
│   └── api.py 对应api的路由配置
├── manage_web.py web启动入口
├── manage_job.py job定时器启动入口
├── manage_api.py api启动入口 (如果有api的话)
├── requirements.txt python 扩展
├── uwsgi.ini 生产环境uwsgi
├── web  HTTP存放
│   ├── controllers 所有的C层放在这里
│   ├── interceptors 拦截器相关
│   ├── static 静态文件
│   └── templates 模板文件

功能特性

目录结构分层

        相信代码分层很多人都听说。但是未必都能理解这样做会有什么好处。对于小型项目可能分不分不会有什么太大的问题,但是如果对于一个大型项目,分层就会带来特别明显的好处。大家翻阅代码知道去什么地方找,让开发和维护更加简洁。

多环境配置隔离

        flask默认官方是有环境配置隔离方法的,我个人觉得官方的方式不太好,所以就结合以前使用php和在实际开发和运维当做自己规定了一套方案。如下 通过不同的配置文件做到多环境覆盖

例如 develop 可以是开发环境,production 是 生产环境,还可以增加test 为测试环境

通过环境变量ops_config 来进行切换

├── config 配置文件
│   ├── base_setting.py   基础配置
│   ├── develop_setting.py 开发环境
│   ├── local_setting_demo.py 本地开发环境配置demo
│   └── production_setting.py 生产环境的配置

支持多APP模式

        很多情况我们可能要开发好几个应用,只有一个满足不了我们的需求。例如增加一个api,增加一个admin 都有可能。为了满足这种情况我就做了定制化架构。

通过不同的入口来决定不同的应用

├── api  api存放
│   ├── controllers 所有的C层放在这里
│   ├── interceptors 拦截器相关
├── router 路由配置入口
│   ├── www.py 对应web的路由配置
│   └── api.py 对应api的路由配置
├── manage_web.py web启动入口
├── manage_api.py api启动入口 (如果有api的话)
├── web  HTTP存放
│   ├── controllers 所有的C层放在这里
│   ├── interceptors 拦截器相关
│   ├── static 静态文件
│   └── templates 模板文件

支持定时器

        为了方便我们写定时器,我自己写了一个简单的脚手架。方便使用。网上也有很多其他的定时器插件。但是从我时间实践得来,定时器当成一个独立的应用会更好,不要和其他应用有任何耦合最好。

├── jobs 定时任务
│   ├── bin
│   └── tasks 所有定时任务都存放在这里
├── manage_job.py job定时器启动入口

http://img2.sycdn.imooc.com/5e6226be00013d9f18640346.jpg

相关截图

http://img.mukewang.com/5e65bb980001436312000530.jpg

http://img.mukewang.com/5e65bbbf0001e2cb12000520.jpg

http://img4.mukewang.com/5e65bbc40001cce512000246.jpg

http://img3.mukewang.com/5e65bbc7000105a612000223.jpg

快速使用

关联课程

打开App,阅读手记
8人推荐
发表评论
随时随地看视频慕课网APP

热门评论

刚看了老师的第一个flask课程,作为测试人员直观的了解前端到服务,再从服务器到前端的响应,对我帮助很大。

查看全部评论