我學習Python的路線可能和大部分人不一樣,當時領導安排任務想做一個運維平臺之類的平臺,那個時候我還是隻會寫shell的小菜鳥。調查了一週,總結發現Python容易上手,Django框架較為全面,於是直接看Django文件。所以一般是:構思想實現的功能 -> google功能在django中如何實現 -> 自己嘗試編寫 -> 遇到問題繼續google,重複這個過程直到想實現的功能完成。這種學習方法能快速達到工作目標,是一種自上而下的學習方法,區別於自下而上的學習方式就是基礎知識不夠紮實,到現在基本都摸透了,總結一下走的彎路。
專案結構
首先的首先,我認為一個專案的結構是最重要的。就好比人類的骨骼,清晰明確的專案結構有利於模組分離,複用,且對於自己或者看你程式碼的人都是一種享受。
最早的時候,我的專案都是在根專案中,寫的程式碼都是在根專案的views.py
中,很快這個檔案就超過2k行,每次開啟需要等一會。就連Pycharm某些外掛都罷工了(大於1000行的檔案出於執行效率問題會忽略)?。
通過自己一段時間的摸索和檢視開源專案等總結,以下結構對我來說比較適合。
專案結構
├── README.md # 說明檔案 ├── apps # 子專案目錄 │ ├── README.md - # 專案規範說明檔案 │ ├── app1 - # 自定義模組一 │ ├── app2 - # 自定義模組二 │ ├── ... - # 更多自定義模組,每個模組一個資料夾 │ └── user - # 使用者模組(單獨抽離出) ├── main # 專案主目錄 │ ├── __init__.py │ ├── asgi.py │ ├── settings.py # 主配置檔案 │ ├── urls.py # 請求URL主入口 │ └── wsgi.py ├── db.sqlite3 # 自帶資料庫(僅開發環境) ├── env # 不同環境的配置檔案 │ ├── README.md - # 環境配置說明 │ ├── env.example - # 配置示例檔案 │ └── env - # 環境配置檔案 ├── logs # 日誌 │ ├── access.log - # 訪問日誌 │ ├── error.log - # 錯誤日誌 │ └── uwsgi.log - # 執行日誌 ├── manage.py ├── reload # (uwsgi) 監聽該檔案變動重啟服務 ├── requirements.txt # 專案依賴 ├── static # 靜態資原始檔 │ ├── css │ ├── image │ └── js └── uwsgi.ini # uwsgi配置檔案
以下幾個目錄比較關鍵
- apps 關於實現的所有業務邏輯,每個模組單獨起一個app寫,相關邏輯放到對應app
- main 根專案,框架啟動入口。不實現任何業務邏輯。固定名稱,就叫main。
- env 專案配置目錄,包含一個專案配置例項。通常會以檔案的方式通過容器掛載。
app結構(偷懶就截個圖)
views.py
,urls.py
不要寫到單個檔案中,否則一旦介面數量變多就比較難維護,拆開放置到不同檔案中。(之前很長一段時間只能靠Ctrl + F搜尋…)filter方法
,serializer方法
不要和models
寫到一起,放到單獨的檔案中。- 抽離出App可以複用的功能,封裝成工具類。我是放到了
utils
中,網上也有說建立一個common.py
的是一樣的道理。
舉例當我想找[使用者管理] -> [後臺系統] 的api時,我可以很快速的定位到apps -> user -> urls -> http -> system
,再也不用去一個大的views.py
中使用搜尋啦
總結:相同功能的模組配置,功能,抽離出來放到單獨的檔案。
放一個總的圖片
本作品採用《CC 協議》,轉載必須註明作者和本文連結