總結python Django在開發(fā)中的使用經(jīng)驗
發(fā)表時間:2023-09-16 來源:明輝站整理相關軟件相關文章人氣:
[摘要]這次給大家?guī)砜偨Ypython Django在開發(fā)中的使用經(jīng)驗,在python Django在開發(fā)中的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。大三的時候第一次接觸 Django,從真正使用 Django 做項目到現(xiàn)在也快 4 年了。最喜歡的其實還是 Django 的 ORM 框架。公司的項...
這次給大家?guī)砜偨Y
python Django在開發(fā)中的使用經(jīng)驗,在python Django在開發(fā)中的
注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。
大三的時候第一次接觸 Django,從真正使用 Django 做項目到現(xiàn)在也快 4 年了。最喜歡的其實還是 Django 的 ORM 框架。公司的項目都是前后分離的,使用 Django 做后端接口開發(fā)還是很高效的。
特此總結一些 Django 開發(fā)的小經(jīng)驗。先說一些最最基礎的吧。
使用 virtualenv 隔離開發(fā)環(huán)境
使用 pip 管理項目依賴,主要就是一個小技巧,使用 pip freeze > requirements.txt 來保存依賴的模塊和版本
使用 gitignore.io 這個網(wǎng)站提供的 .gitignore 文件管理代碼庫文件
打包和發(fā)布
項目的打包和發(fā)布用的 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 = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '[application] %(levelname)s %(asctime)s %(module)s %(message)s'
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
'formatter': 'verbose'
},
},
'loggers': {
'app': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
},
}
新版本的 uwsgi 已經(jīng)可以把 webapp 的日志收集起來輸出到標準輸出里面了。如果需要收集、管理日志的話,就是用 Docker 日志收集工具,直接收集 Docker 容器的日志即可。
自動化測試
既然是純后端項目,工程師完全可以通過自動化測試來檢測自己的代碼。Django 本身對測試提供了很好的支持,可以通過 sqlite 來搭建測試數(shù)據(jù)庫,還有基于內(nèi)存的緩存,做測試不會增加對其他系統(tǒng)的依賴。開發(fā)起來事半功倍。
除了要寫自動化測試代碼,還要能統(tǒng)計測試覆蓋率。目前我們用的是 coverage.py 這個工具,說實話沒有 node.js 的 istanbul 好用,輸出的報告沒有 Istanbul 詳細和易讀。不過用來檢查 “死代碼” 還是夠用的。
針對 http 代碼的測試
有些項目需要對接的第三方系統(tǒng)比較多,比如微信認證、支付、短信等常見的,可能還有其他一些垂直業(yè)務領域的系統(tǒng)。這部分接口對接的代碼,也應該納入到測試當中,畢竟 Python 作為腳本語言,代碼很容易出現(xiàn)錯誤。
這塊一般是用 responses 這個模塊來 mock http 請求。
定時任務
有一些 Django 項目需要做一些定時任務。首先,絕對不用 linux 內(nèi)置的 crontab。主要的問題還是維護的成本高,沒準哪天就把這個配置給忘了。
我們現(xiàn)在方式都是借助 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)
如果對于這塊有任何不懂的問題可以隨時來問我,我對于學習方法,系統(tǒng)學習規(guī)劃,還有學習效率這些曾經(jīng)研究的很深,希望可以幫助大家少走彎路。Python新手交流群 前三位:四六三 ,中間三位:零二四,最后三位是:零九一
相信看了這些案例你已經(jīng)掌握了方法,更多精彩請關注php中文網(wǎng)其它相關文章!
相關閱讀:
vue的css動畫
image與view標簽上下有空隙的解決方法
為什么slot都是用在子組件
如何利用getBoundingClientRect()來實現(xiàn)div容器滾動固定
以上就是總結python Django在開發(fā)中的使用經(jīng)驗的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!
網(wǎng)站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產(chǎn)和維護的網(wǎng)站。