热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【分享】分层明确高度定制化的PythonFlaskMVC

缘由    Python在AI,ARVR这块使用越来越广泛。同时在Web方面也有很多成熟的框架。而我本身由于使用

缘由

    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定时器启动入口

【分享】分层明确高度定制化的 Python Flask MVC - 文章图片


快速使用

  • github:https://github.com/apanly/python3_flask_frame 

  • 码云:https://gitee.com/apanly/python3_flask_frame 

关联课程

  • Python Flask快速入门与进阶:点击这里传送门 

  • Python Flask构建微信小程序订餐系统:点击这里传送门


原文地址:【分享】分层明确高度定制化的 Python Flask MVC
标签:flask ??python ??job ??app ??

智能推荐

  • Python 虚拟环境Virtualenv
  • Python 资源大全中文版
  • Python Flask jsonify a Decimal Error
  • 号外!! Python Flask 从入门到精通 上线啦
  • 微信小程序 订阅消息 对接详细记录


推荐阅读
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
author-avatar
靈幻雪月
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有