一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 全面剖析Python的Django框架中的項目部署技巧

全面剖析Python的Django框架中的項目部署技巧

2020-06-08 09:59腳本之家 Python

這篇文章主要全面剖析了Python的Django框架的部署技巧,包括Fabric等自動化部署和建立單元測試等方面,強烈推薦!需要的朋友可以參考下

項目開始時是一個關鍵時刻,選擇會對項目產生長期的影響。有很多關于如何開始使用Django框架的教程,但很少討論如何專業地使用Django,或如何使用行業公認的最佳做法來確保你的項目規模的持續增長。事前的籌劃讓你(和所有同事的生活)在走向將來時更容易。

文章結束時,你將有

  •     一個全功能的Django 1.6項目
  •     源代碼受控的所有資源(使用Git或Mercurial)
  •     自動回歸和單元測試(使用unittest庫)
  •     一個獨立于特定環境的安裝項目(使用virtualenv)
  •     自動化的部署和測試(使用Fabric)
  •     自動數據庫遷移 (使用South)
  •     一個標度你站點的開發工作流程

除第一部在官方教程中外其他部分教程里都沒有。它們應該這樣。如果你想開始一個新的、生產就緒的Django 1.6項目,請繼續往下看。

先決條件

假定你已了解Python的基本知識,同時,以往的一些Django經驗會有幫助,但這不是必要的。你需要git或Mercurial來進行版本控制。就這些!
準備安裝

我假設你已經安裝了Python。如果你沒有的話到python.org找到與你系統架構相符的版本下載安裝。我使用一個Linode上的64位的Ubuntu服務器,我很高興使用Linode的服務。

那么,第一步是什么呢?安裝Django?不完全是。將安裝包直接安裝到你當前的site-packages里有一個常見的問題:如果你的機器上有一個以上的Python項目使用Django等其他庫,你可能會碰到應用和安裝軟件庫之間依賴性的問題。因此,我們將使用virtualenv和它的延展virtualenvwrapper來管理我們的Django安裝。這是Python和Django用戶的實踐建議。

如果你使用pip來安裝第三方庫(我不明白你為什么不),你可以通過簡單的操作安裝virtualenv和virtualenvwrapper。
 

?
1
$ pip install virtualenvwrapper

安裝完后,將下附內容添加到你的shell啟動配置文件中(.zshrc、.bashrc、.profile等)
 

復制代碼 代碼如下:
export WORKON_HOME=$HOME/.virtualenvsexport PROJECT_HOME=$HOME/directory-you-do-development-insource /usr/local/bin/virtualenvwrapper.sh

 

重載一下你的啟動配置文件(source .zshrc),現在你已經就緒了。

創建一個新環境

創建一個虛擬環境很簡單,只需輸入
 

?
1
$ mkvirtualenv django_project

“django_project”是你的項目的命名。

你會注意到立馬發生的一些事情:

    你的shell前面加上了“(django_project)”

    distribute和pip被自動安裝了

這里是virtualenvwrapper的一個很有用的部分:它會自動為你準備好環境,讓你馬上可以使用pip安裝庫。“(django_project)”的部分是提醒你正在使用的是virtualenv而不是你系統上的Python。要退出虛擬環境只需簡單輸入deactivate即可。當你要回到你的項目開始工作時,只需使用workon django_project即可。需要注意的是這與vanilla virtualenv工具不同,在哪里運行這些命令都可以。

安裝Django

“等一下,‘安裝Django'?我已經安裝Django了!”,太好了。不過你不會用它的。相反,我們將使用機器上的一個被virtualenv管理的且不會被其他用戶(或你自己)弄亂的Django安裝。在virtualenv中安裝Django,只需輸入:
 

?
1
$ pip install django

這樣最新版的Django將被安裝在你的virtualenv環境里,你可以這樣確認:
 

?
1
$ which django-admin.py

這會指出你的$HOME/.virtualenvs/目錄。如果沒有的話,確認你的輸入提示里有“(django_project)”。如果沒有,使用workon django_project激活virtualenv。

建立項目

在我們真正開始這個項目之前,我們先來談一談。我在過去的幾年里咨詢過很多Django/Python項目并且和許多開發者討論過。一個具有壓倒性的事實是,那些具有最多困難的事情往往都沒有使用任何的版本控制。這聽起來讓人難以置信(想想GitHub的流行程度吧),但是開發者們根本不會去接觸版本控制。也有一些人認為"這是個小項目",沒有必要使用版本控制。這是錯誤的。

這里列出的工具不會讓你為了使用版本控制而增加更多額外的支出。

之前,我只提到過git作為(D)VCS。但是,既然這個項目是Python寫的,Mercurial也是一個基于Python的不錯的選擇。因為兩者都比較流行,所以你能找到許多在線學習資源。確保你已經安裝了git或者Mercurial。兩者都可以通過你的distro's packaging系統獲取它們。

如果你打算用git,GitHub顯然是一個很好的選擇可以把你的代碼保存到遠程倉庫里。使用Mercurial的話, Atlassian的Bitbucket是一個不錯的選擇(它也支持git,所以你用git或者Mercurial都行)

(源碼)控制你的環境

即使我們還沒真正做什么,但我們知道我們想讓所有東西都在源碼控制下。我們有兩類“東西”將提交:你的代碼本身(包括模板,等等)和支持文件,像數據庫夾具、South遷移(以后會更多)和requirements.txt文件,列出你的項目依賴的所有包,允許自動構建環境(不需要再次使用pip install安裝所有包)。

讓我們開始創建我們的項目文件夾。使用django-admin.py提供的startproject命令來設置。
 

?
1
$ django-admin.py startproject django_project

我們將看到創建了一個單獨的文件夾:django_project。在django_project文件夾內,我們將看到 另一個包含了常見元素的django_project文件夾:setting.py,urls.py和wsgi.py。在第二個django_project文件夾的同一級內有manage.py文件。

插曲:項目vs.應用程序

你也許會好奇,在Django1.4中,為什么已經有了新建應用程序的命令還要增加新建項目的命令。答案在于Django“項目”和Django“應用程序”的區別。簡單來說,一個項目是一套完整的網站或者應用。一個“應用程序”是一個可以用在任何Django項目中的很小的、(希望是)獨立的Django應用。如果你正在構建一個叫做“超級博客”的博客應用,那么“超級博客”就是你的Django項目。如果“超級博客”支持讀者投票,那“投票”就是被“超級博客“使用的一個Django應用程序。這個概念就是需要你的投票應用程序可以應用在其他需要用戶投票的Django項目中,而不是僅能應用在”超級博客“項目中。一個項目就是一堆應用程序按照項目特定的邏輯構建的一個集合。一個應用程序可以應用在多個項目中。

盡管你會本能地傾向于在你的“投票”應用程序中包含大量"超級博客"的特定代碼和信息,但避免這樣有許多好處?;谒神詈系脑?,將你的應用編寫為一個獨立的實體可以保持設計意圖,并且可以避免項目里的bug直接影響到你的應用。這也意味著,如果你希望的話,你可以把你的任何應用程序發給另一個開發者,且他們不需要訪問或更改你的主項目。

像軟件開發中的許多事情一樣,這需要一點付出,但回報很豐厚。

創建倉庫

現在我們的項目里已經有一些“代碼”了(確實來說只是一些股票腳本和空的配置文件,恕我這樣說),現在是我們初始我們源碼控制庫再好不過的時間了。下面是在Git和Mercurial中實現的步驟。
git
 

?
1
$ git init

這條命令在當前目錄創建了一個git倉庫。將我們所有的文件添加到git以便提交。
 

?
1
$ git add django_project

現在,我們將代碼切實提交到我們的新庫中:
 

?
1
$ git commit -m 'Initial commit of django_project'

Mercurial
 

?
1
$ hg init

這條命令在當前目錄創建了一個Mercurial倉庫。將我們所有的文件添加到git以便提交。
 

?
1
$ hg add django_project

現在,我們將代碼切實提交到我們的新庫中:
 

?
1
$ hg commit -m 'Initial commit of django_project'

如果你打算使用像GitHub或者Bitbucket,現在是時候把代碼push上去了。

使用South進行數據庫遷移

Django中最令人沮喪的特性之一是管理模型的變化和數據庫的相關變化。有了South的幫助,你可以實現創建一個完整的應用,而不需要寫具體的數據庫代碼。South會創建一個遷移文件來檢測你的模型變化,并自動在數據庫中生成。這使得你既可以前向根據最新變化來遷移數據庫,又可以后向取消一個變化或者一系列變化。它讓你的生活如此簡單,Django發行版沒有包含它真讓人吃驚。

何時開始使用South

在前面的文章中,我建議在項目的一開始就使用South。對于相對簡單的項目而已,這挺好。然而,如果在你的原型中有大量的模型有很大的變化,那現在不是使用South的時候。對應的,僅僅丟掉并在需要時重建數據庫。你可以編寫腳本來構成擁有一些測試數據的數據庫,并在需要時編輯它們。然而,一旦你的模型不再變化,盡快開始使用South。這很簡單:
 

?
1
./manage.py convert_to_south <app_name>

 

安裝和設置

仍然在我們的虛擬環境下,像這樣安裝South:
 

?
1
$ pip install south

我們在項目的settings.py文件中把South添加到INSTALLED_APS中。現在就添加,包括你的項目中的數據庫設置,然后運行python manage.py syncdb。你將需要提升權限使用超級用戶名和密碼(你可以輸入然后回車)。更重要的是,South已經在數據庫中設置好了它需要用的表格。

你可能認識到我們并沒有在項目中添加應用,而只是運行了 syncdb。先這樣做可以讓 South 在一開始的時候就被安裝。使用 South,在我們應用中的所有遷移工作都可以完成,包括初始遷移。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩免费一区二区在线观看 | 午夜视频一区二区 | 果冻传媒九一制片厂网站 | 日韩色图区 | 午夜欧美精品 | 荡娃艳妇系列小说 | 大乳孕妇一级毛片 | 久久人妻少妇嫩草AV无码 | 外国老少性配 | videos护士有奶水 | 国内精品福利丝袜视频_速 国内精品91久久久久 | jj免费视频| 国产白白视频在线观看2 | 久久久久久久99精品免费观看 | 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 精品一区二区三区免费视频 | 高h肉爽文农民工 | 欧美18-19 | 视频一区精品 | 国产综合欧美日韩视频一区 | 久久人妻少妇嫩草AV无码 | 日韩在线观看网站 | 日韩免费一级毛片 | 91精品国产综合久久福利 | 欧美激情精品久久久久久不卡 | 国产精品免费网站 | 日b视频免费 | 99久久99久久久精品齐齐鬼色 | 午夜无码国产理论在线 | 女教师三级做受 | 经典三级四虎在线观看 | 国产小视频免费看 | 亚洲AV久久无码精品九九软件 | 国产一区视频在线免费观看 | 精品国产剧情在线观看 | 国产精品久久久久久影视 | 国色天香视频完整版 | 99久久国产综合精品女不卡 | porono日本动漫 | 国产精品久线观看视频 | 免费高清www动漫视频播放器 |