緣由
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定時器啟動入口
快速使用
- github:https://github.com/apanly/python3_flask_frame
- 碼云:https://gitee.com/apanly/python3_flask_frame
相關(guān)截圖

12.png

13.png

14.png

15.png