當前位置:
首頁 > 知識 > Django:當你開始一個新項目時要注意的地方-2018年更新

Django:當你開始一個新項目時要注意的地方-2018年更新

Django:當你開始一個新項目時要注意的地方-2018年更新

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

現在回想起來,如果在開始Django之旅的時候我注意了這幾個地方,會省去我大量的時間和精力。

延伸閱讀(Too Long To Read): 注意使用cookiecutter-Django 以便上手所提到的大部分東西。

當我開始做web開發時,我是一名普通的php程序員,不屑於老是看文檔。經過努力,總能從搜索引擎中找到解決方法(嗯,現在仍然如此)。

讓我很不爽的是,有時候各種東西攪和在一起,你很難讀懂別人的代碼,甚至是幾個禮拜前自己寫的代碼。這一點不可小覷,閱讀代碼總是花很多時間。

Python(以及Django)的出現解救了我。第一次,我能夠輕鬆地閱讀別人的代碼了(也不全是,哈哈)。閱讀,變得更簡單了。事實上,通過閱讀別人的代碼,我的技能提高了很多。然而,和其他人一樣,一開始我犯了很多,尤其是Django相關的錯誤。

以下是我希望記錄下來的東西,對於開始時踩過的那些坑,我會逐一添加。

Cookie cutter Django

每次當我開始一個項目時,總會創建一個什麼都沒有的空白項目。然後,反覆地修改項目,直到出現我希望的設定/結構。

我原以為我只要為新項目建一個代碼庫,然後繼續開發就好了,但實際上維護和更新這個代碼庫卻佔用了大量的時間。

cookiecutter-Django 是一個超棒的項目。有了它,你可以在開始項目時就應用很多人稱「最佳實踐」的東西。它也自帶了一些有助於加速開發的常用組件。

Virtualenv

如果你已經看過一些Python文檔,你應該見過這個東西。再怎麼推薦都不為過啊。

一定要使用virtualenv來分開每個項目的開發環境。即使你開始的時候只有一個項目,不要都放在global裡面,並且你很快就有更多的項目的。

當你創建一個新的環境時,可以這樣指定Python版本:


virtualenv env -p python3

另外,確保你查看一下 virtualenvwrapper,這篇文檔能幫助你輕鬆地管理各種不同的虛擬環境:

  • 在一個地方存儲所有的虛擬環境

  • 儘快進入虛擬環境,比如,只要運行workon awesome project就好了

  • 設定好當你進出這些環境時所運行的腳本(簡單的例子如:切換到項目所在目錄,啟動一些東西)

設定之結構

這是另一件重要的事情 -- 我是認真的。

常規的開發流程是這個樣子:你進行本地開發,然後推送到某種測試伺服器,最後上線。

每個環境都有其自身的設定和配置(比方說,本地的資料庫配置會不同於生產環境的配置)。

對於特定的東西,尤其是那些敏感信息,可以選擇從環境變數來獲取。

其他的東西,你可以為不同的環境準備不同的設定文件,如圖所示:

Django:當你開始一個新項目時要注意的地方-2018年更新

base.py 包含常見的環境設定;local.py 包含屬於本地環境的設定;

local.py, staging.py 和 production.py 會導入base.py的設定。你可以藉助環境變數來決定要用哪個設定文件。

manage.py的例子:


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")

如果你使用cookiecutter-django,這些是已經存在的!

從一開始自定義用戶模型

始終從一開始就選擇自定義用戶模型。

你可能會覺得對於簡單的項目,沒必要開始的時候需要一個自定義的用戶模型(我原來也這樣認為)

可是呢,如果項目持續一段時候後,你很有可能很快需要轉到用戶模型,以便

引入額外的東西。遷移到用戶模型並不總是一件有樂趣的任務。

用於監控的Sentry

用Sentry來進行監控。真的,很簡單很容易。你能獲得些什麼?

  • 當你的站點有問題時,會有通知郵件

  • 管理你的問題(給事情打勾,哈哈)

  • 問題的統計

幾個可以使用的App

  • Django-extensions 包含很多東西,我並非都用過。比如:

  • runserver_plus: 不是常規的runserver,而是用來本地運行服務的。你會接觸到很好看的調試界面,每步都提供互動式Python Shell! (這點是最吸引我的)

  • show_urls: 顯示所有項目的urls,和他們指向的視圖。

  • django-debug-toolbar 調試工具欄可以顯示很多東西,比如調試消息,比如執行了那些SQL查詢。

  • django_builder 你只需要引入你的模型,然後它會生成各種東西,是的,有url, 視圖,表單,測試。

英文原文:https://peeomid.com/blog/2018-01-26-what-i-wish-i-knew-when-i-started-django-development-2018/
譯者:泰然

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

R开发人员使用Python
把自己的Python包部署到PyPi

TAG:Python部落 |