【分享】分層明確高度定制化的 Python Flask MVC

緣由

Python在AI,AR VR這塊使用越來越廣泛。同時在Web方面也有很多成熟的框架。而我本身由于使用
Flask 比較多,個人認為就是比較簡單,容易入手,可定制化強。這里我將我經(jīng)過多個項目多次迭代的
自認為還可以的框架結(jié)構(gòu)整理出來。方便自己可以更容易創(chuàng)建新項目。

目錄結(jié)構(gòu)

.
├── api  api存放
│   ├── controllers 所有的C層放在這里
│   ├── interceptors 攔截器相關(guān)
├── application.py  封裝的Flask的全局變量,包括app,數(shù)據(jù)庫等
├── common 存放公用部分
│   ├── libs  公用方法或者類
│   ├── models 所有的數(shù)據(jù)庫model
├── config 配置文件
│   ├── base_setting.py   基礎(chǔ)配置
│   ├── develop_setting.py 開發(fā)環(huán)境
│   ├── local_setting_demo.py 本地開發(fā)環(huán)境配置demo
│   └── production_setting.py 生產(chǎn)環(huán)境的配置
├── docs 文檔存放
│   ├── Mysql.md  所有數(shù)據(jù)庫變更必須在這里記錄
├── jobs 定時任務(wù)
│   ├── bin
│   └── tasks 所有定時任務(wù)都存放在這里
├── router 路由配置入口
│   ├── www.py 對應(yīng)web的路由配置
│   └── api.py 對應(yīng)api的路由配置
├── manage_web.py web啟動入口
├── manage_job.py job定時器啟動入口
├── manage_api.py api啟動入口 (如果有api的話)
├── requirements.txt python 擴展
├── uwsgi.ini 生產(chǎn)環(huán)境uwsgi
├── web  HTTP存放
│   ├── controllers 所有的C層放在這里
│   ├── interceptors 攔截器相關(guān)
│   ├── static 靜態(tài)文件
│   └── templates 模板文件

功能特性

目錄結(jié)構(gòu)分層

相信代碼分層很多人都聽說。但是未必都能理解這樣做會有什么好處。對于小型項目可能分不分不會有什么太大的問題,但是如果對于一個大型項目,分層就會帶來特別明顯的好處。大家翻閱代碼知道去什么地方找,讓開發(fā)和維護更加簡潔。

多環(huán)境配置隔離

flask默認官方是有環(huán)境配置隔離方法的,我個人覺得官方的方式不太好,所以就結(jié)合以前使用php和在實際開發(fā)和運維當(dāng)做自己規(guī)定了一套方案。如下 通過不同的配置文件做到多環(huán)境覆蓋

例如 develop 可以是開發(fā)環(huán)境,production 是 生產(chǎn)環(huán)境,還可以增加test 為測試環(huán)境

通過環(huán)境變量ops_config 來進行切換

├── config 配置文件
│   ├── base_setting.py   基礎(chǔ)配置
│   ├── develop_setting.py 開發(fā)環(huán)境
│   ├── local_setting_demo.py 本地開發(fā)環(huán)境配置demo
│   └── production_setting.py 生產(chǎn)環(huán)境的配置

支持多APP模式

很多情況我們可能要開發(fā)好幾個應(yīng)用,只有一個滿足不了我們的需求。例如增加一個api,增加一個admin 都有可能。為了滿足這種情況我就做了定制化架構(gòu)。
通過不同的入口來決定不同的應(yīng)用

├── api  api存放
│   ├── controllers 所有的C層放在這里
│   ├── interceptors 攔截器相關(guān)
├── router 路由配置入口
│   ├── www.py 對應(yīng)web的路由配置
│   └── api.py 對應(yīng)api的路由配置
├── manage_web.py web啟動入口
├── manage_api.py api啟動入口 (如果有api的話)
├── web  HTTP存放
│   ├── controllers 所有的C層放在這里
│   ├── interceptors 攔截器相關(guān)
│   ├── static 靜態(tài)文件
│   └── templates 模板文件

支持定時器

為了方便我們寫定時器,我自己寫了一個簡單的腳手架。方便使用。網(wǎng)上也有很多其他的定時器插件。但是從我時間實踐得來,定時器當(dāng)成一個獨立的應(yīng)用會更好,不要和其他應(yīng)用有任何耦合最好。

├── jobs 定時任務(wù)
│   ├── bin
│   └── tasks 所有定時任務(wù)都存放在這里
├── manage_job.py job定時器啟動入口

快速使用

相關(guān)截圖

12.png
13.png
14.png
15.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容