總結Django一些開發經驗

2021-09-13 00:19:50 字數 1691 閱讀 5873

最喜歡的還是 django 的 orm 框架。公司的專案都是前後分離的,使用 django 做後端介面開發還是很高效的。

特此總結一些 django 開發的小經驗。先說一些最最基礎的吧。

使用 virtualenv 隔離開發環境

使用 pip 管理專案依賴,主要就是乙個小技巧,使用 pip freeze > requirements.txt 來儲存依賴的模組和版本

使用 gitignore.io 這個**提供的 .gitignore 檔案管理**庫檔案

打包和發布

專案的打包和發布用的 docker,django 專案的 dockerfile 特別簡單:

from python:3.5

copy ./requirements.txt /src

workdir /src

run pip install -r requirements.txt

copy . /src

expose

cmd uwsgi --http :--wsgi-file

這乙個 dockerfile 模板可以通吃 80% 的 django 專案了。

日誌配置

既然用 docker,就放棄了把日誌寫入檔案,直接寫到標準輸出。

# settings.py 

# ...

logging =

},'handlers': ,

},'loggers': ,

},}

自動化測試

既然是純後端專案,工程師完全可以通過自動化測試來檢測自己的**。django 本身對測試提供了很好的支援,可以通過 sqlite 來搭建測試資料庫,還有基於記憶體的快取,做測試不會增加對其他系統的依賴。開發起來事半功倍。

除了要寫自動化測試**,還要能統計測試覆蓋率。目前我們用的是 coverage.py 這個工具,說實話沒有 node.js 的 istanbul 好用,輸出的報告沒有 istanbul 詳細和易讀。不過用來檢查 「死**」 還是夠用的。

針對 http **的測試

這塊一般是用 responses 這個模組來 mock http 請求。

定時任務

有一些 django 專案需要做一些定時任務。首先,絕對不用 linux 內建的 crontab。主要的問題還是維護的成本高,沒準哪天就把這個配置給忘了。

我們現在方式都是借助 django command 的功能,將定時任務封裝成乙個 command。在這個 command 裡面執行乙個 scheduler。就像下面這樣:

import schedule

from django.core.management.base import basecommand

class command(basecommand):

def handle(self, *args, **kwargs):

schedule.every(45).minutes.do(do_this)

schedule.every().day.at('04:00').do(do_that)

while true:

schedule.run_pending()

time.sleep(1)

開發Deluxems的一些經驗總結

1.用三元運算子實現新聞部分顯示 eval newcontent tostring length 25?eval newcontent tostring substring 0,25 eval newcontent tostring 2.貨幣驗證 可以輸入整數和帶兩位小數的數字 0 9 0 9 0 ...

MTK開發中一些經驗總結

1.在確定你的mtk工程完整而且在模擬器和真機上能正常執行 之前,不要開始工作。2.mtk開發 c是唯一選擇,不要試圖用把c 工程移植到mtk平台。3.ads c c compiler不同的編譯選項可能導致 的效能差異很大。ads使用armv4指令集,而真機是thumb指令集。4.mmi gui的工...

android 開發中總結的一些經驗

the field contacts.peoplecolumns.name is deprecated android 優化 requested window android.os.binderproxy 450b2f48 does not exist json 中文 亂碼 編碼 問題解決 判斷自己...