總結python Django在開發中的使用經驗

php中世界最好的语言
發布: 2018-02-26 09:17:10
原創
1837 人瀏覽過

這次帶給大家總結python Django在開發中的使用經驗,在python Django在開發中的注意事項有哪些,下面就是實戰案例,一起來看一下。

大三的時候第一次接觸 Django,從真正使用 Django 做專案到現在也快 4 年了。最喜歡的其實還是 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<path/to/wsgi.py>
登入後複製

這一個Dockerfile 模板可以通吃80% 的Django 專案了。

日誌配置

既然用 Docker,就放棄了把日誌寫入文件,直接寫到標準輸出。

   
# settings.py 
# ...
LOGGING = {
    &#39;version&#39;: 1,
    &#39;disable_existing_loggers&#39;: False,
    &#39;formatters&#39;: {
        &#39;verbose&#39;: {
            &#39;format&#39;: &#39;[application] %(levelname)s %(asctime)s %(module)s %(message)s&#39;
        }
    },
    &#39;handlers&#39;: {
        &#39;console&#39;: {
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;class&#39;: &#39;logging.StreamHandler&#39;,
            &#39;stream&#39;: sys.stdout,
            &#39;formatter&#39;: &#39;verbose&#39;
        },
    },
    &#39;loggers&#39;: {
        &#39;app&#39;: {
            &#39;handlers&#39;: [&#39;console&#39;],
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;propagate&#39;: True,
        },
    },
}
登入後複製


新版的 uwsgi 已經可以把 webapp 的日誌收集起來輸出到標準輸出裡面了。如果需要收集、管理日誌的話,就是用 Docker 日誌收集工具,直接收集 Docker 容器的日誌即可。

自動化測試

既然是純後端項目,工程師完全可以透過自動化測試來偵測自己的程式碼。 Django 本身對測試提供了很好的支持,可以透過 sqlite 來建立測試資料庫,還有基於記憶體的緩存,做測試不會增加對其他系統的依賴。開發起來事半功倍。

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

針對 http 程式碼的測試

有些項目需要對接的第三方系統比較多,例如微信認證、付款、簡訊等常見的,可能還有其他一些垂直業務領域的系統。這部分介面對接的程式碼,也應該納入測試當中,畢竟 Python 作為腳本語言,程式碼很容易出現錯誤。

這塊通常是用 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(&#39;04:00&#39;).do(do_that)
        while True:
            schedule.run_pending()
            time.sleep(1)
登入後複製

如果對於這塊有任何不懂的問題可以隨時來問我,我對於學習方法,系統學習規劃,還有學習效率這些曾經研究的很深,希望可以幫助大家少走彎路。 Python新手交流群前三位:四六三,中間三位:零二四,最後三位是:零九一

我相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關讀取:

vue的css動畫

image與view標籤上下有空隙的解決方法

為什麼slot都是用在子元件

#如何利用getBoundingClientRect()來實作div容器滾動固定

#

以上是總結python Django在開發中的使用經驗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!