
文中所有示例代碼的倉庫位址:https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial
本教程寫作時開發環境的系統平台為 Windows 10 (64 位),Python 版本為 3.6.4 (64 位),django 版本為 2.2.3。
建議盡可能地與教程的開發環境保持一緻(尤其是 Python 與 django 版本),避免不必要的麻煩。Python 版本必須為 Python 3.4 或以上,django 版本号必須為 django 2.2.x。
注意: django 2.0 以上版本不再支援 Python 2。
Windows 下安裝 Python 非常簡單,去 Python 官方網站找到 Python 3 的下載下傳位址,根據你的系統選擇 32 位或者 64 位的安裝包,下載下傳好後輕按兩下安裝即可。
安裝完後檢測 Python 是否可以正常運作。在指令行輸入 python -V ,如果輸出了 Python 的版本号,說明 Python 已安裝成功。
提示: 如果提示指令未找到,而你又确定已經安裝了 Python,多半是因為沒有把 Python 添加到環境變量。可搜尋如何把 Python 添加到環境變量的相關教程,将安裝的Python 添加到環境變量即可。
強烈推薦在虛拟環境下進行 django 的開發。
虛拟環境是一種 Python 工具,使用它可以建立一個獨立的 Python 環境。
為什麼要使用虛拟環境呢?舉個例子,假設你已經在系統中安裝了 Python,并且在閱讀此教程前你已經進行過一些 django 的學習,但那時候安裝的 django 還是 1.x 的老版本。我們教程使用的是最新版的 django 2.2.x 版本,你可能不願意删除掉舊版的 django 1.x,因為那可能導緻你以前的項目無法運作。既想讓原來的項目在 django 1.x 環境下運作,又想再安裝 django 2.2.x 來開啟本教程的項目,怎麼辦呢?使用虛拟環境就能夠完美解決這個問題。
虛拟環境幫我們從系統的 Python 環境中克隆一個全新的 Python 環境出來,這個環境獨立于原來的 Python 環境。我們可以在這個新克隆的環境下安裝 django 2.2.x,并且在這個新環境下運作我們的新項目。
有多種方式建立和使用虛拟環境,此前我個人習慣使用 virtualenv 配合 virtualenvwrapper 兩個 Python 庫來使用和管理虛拟環境,現在我比較喜歡使用 Pipenv 代替上面兩個工具。此外 Python 3.3 以後的發行版,自帶一個 venv 供開箱即用。為了簡單起見,這裡介紹兩種方式,一種是我之前用的 virtualenv,還有一種就是我現在在用的 Pipenv。virtualenvwrapper 和 venv 的使用,可以在學完這個教程後自行探索。
鑒于 Pipenv 可以完美替代 virtualenv 和 virtualenvwrapper,而且對項目依賴的管理做的更好,是以後續教程如果用到虛拟環境,都會使用 Pipenv 進行管理。
virtualenv 的使用非常簡單,首先安裝 virtualenv,打開指令行工具,輸入下面的指令即可安裝 virtualenv:
安裝成功後就可以開始建立虛拟環境,指定一個你喜歡的目錄,virtualenv 會把這個新的虛拟環境裝到你指定目錄下。例如我把它裝到 C:\Users\yangxg\.virtualenvs 目錄下,并将虛拟環境命名為 blogproject_virtualenv(也可以取任何你喜歡的名字)。在指令欄運作如下指令:
虛拟環境已經建立好了,我們需要激活這個環境,進入到剛才建立的虛拟環境的根目錄,運作 Scripts 目錄下的 activate 程式激活它:
注意 Linux 下沒有 Scripts\ 這個目錄,取而代之的是 bin/ 目錄。且激活指令為:
可以看到指令提示符前面多了 (blogproject_virtualenv),說明我們已經成功激活了虛拟環境,接下來就可以開始安裝 django 了。
如果使用 PowerShell,微軟預設不允許執行 ps1 腳本,如果你得到如下錯誤:
需要修改 PowerShell 的腳本執行政策以允許 ps1 腳本運作,指令為 Set-ExecutionPolicy RemoteSigned:
即将執行政策修改為允許執行被信任的且由釋出者簽名的下載下傳自 Internet 的腳本。
首先通過指令 pip install pipenv 安裝 Pipenv。
然後建立一個檔案夾,作為我們将要開發的部落格項目的根目錄,例如我在個人的工作目錄 C:\Users\yangxg\SpaceLocal\Workspace\G_Courses\ 下建立一個名為 HelloDjango-blog-tutorial 的目錄,作為項目根目錄。
然後進入這個目錄,在這個目錄下執行 pipenv install,Pipenv 将會為我們做好一切工作。具體來說,Pipenv會根據項目檔案夾的名稱建立一個虛拟環境,并且會在項目根目錄下生成 Pipfile 和 Pipfile.lock 用于管理項目依賴(以後使用 Pipenv 安裝的依賴會自動寫入 Pipfile 檔案,無需再手動維護 requirements.txt 檔案,類似于 node.js 的 package.json,簡直爽歪歪)。
此外,Pipenv 還非常貼心地輸出下列資訊,告訴你如何使用建立的虛拟環境:
To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
即,要激活虛拟環境,在項目根目錄下運作 pipenv shell 指令。
或者,沒有激活虛拟環境的情況下,運作 pipenv run + 指令,也可以在虛拟環境中執行指定的指令。
考慮到 Pipenv 可以非常友善地幫我們管理虛拟環境以及項目依賴,後續我們将始終使用 Pipenv 作為虛拟環境管理工具。
你可能想知道 pipenv 建立的虛拟環境在哪裡?預設情況下,Pipenv 會将虛拟環境建立在 ~/.virtualenvs 目錄下,在項目根目錄下使用 pipenv --venv 可以檢視到項目對應的虛拟環境的具體位置:
django 的官方文檔對 如何安裝 django 給出了詳細且明确的指導,不過我們目前用不上這些,隻需使用 pipenv 指令就可以解決問題。進入項目根目錄,運作:
我們用 django==2.2.3 來安裝指定的 django 版本以保證和教程中的一緻。如果你直接 pipenv install django 的話有可能安裝最新的 django 發行版本,而不是 django 2.2.3,有可能帶來不相容性,為後續教程的順利進行帶來麻煩。
測試一下安裝是否成功,先在指令行輸入 pipenv run python 啟動虛拟環境中的 Python 解釋器互動界面)。然後輸入 import django,如果沒有報錯就說明 django 安裝成功。通過運作 print(django.get_version()) 列印出 django 的版本号,確定安裝了正确版本的 django。
萬事已經具備了,讓我們來建立 django 項目工程。
django 工程(Project)是我們項目代碼的容器,例如我們部落格項目中所有的代碼(包括 django 為我們自動生成的以及我們自己寫的)都包含在這個工程裡。其實說通俗一點就是用一個檔案夾把一系列 Python 代碼檔案和 django 配置檔案包裹起來,這個檔案夾就可以看做一個 django 工程。我們不必親自動手建立這個檔案夾和代碼檔案,django 的内置指令已經幫我們做了這些事情。例如我把部落格工程的代碼放在C:\Users\yangxg\SpaceLocal\Workspace\G_Courses\HelloDjango-blog-tutorial 目錄下,工程名我把它叫做 blogproject,那麼在項目根目錄運作如下指令建立工程:
django-admin startproject 指令用來初始化一個 django 項目,它接收兩個參數,第一個是項目名 blogproject,第二個指定項目生成的位置,因為之前我們為了使用 Pipenv 建立了項目根目錄,是以将項目位置指定為此前建立的位置。
進入工程所在目錄 C:\Users\yangxg\SpaceLocal\Workspace\G_Courses\HelloDjango-blog-tutorial(你可能設定在其它路徑),會發現多了一個 blogproject\ 的目錄,整個項目的檔案結構如下:
最頂層的 HelloDjango-blog-tutorial\ 目錄是我們剛剛指定的項目根目錄。HelloDjango-blog-tutorial\ 目錄下面有一個 manage.py 檔案,manage 是管理的意思,顧名思義 manage.py 就是 django 為我們生成的管理這個項目的 Python 腳本檔案,以後用到時會再次介紹。與 manage.py 同級的還有一個 blogproject\ 的目錄,這裡面存放了一些 django 的配置檔案,例如 settings.py、urls.py 等等,以後用到時會詳細介紹。
網站需要運作在一個 Web 伺服器上,django 已經為我們提供了一個用于本地開發的 Web 伺服器。在指令行工具裡進入到 manage.py 所在目錄,即 HelloDjango-blog-tutorial\ 目錄下。運作 pipenv run python manage.py runserver 指令就可以在本機上開啟一個 Web 伺服器:
看到這樣的資訊表明我們的伺服器開啟成功。
在浏覽器輸入 http://127.0.0.1:8000/ ,看到如下的頁面:
It worked! django 工作了!
如果在浏覽器輸入 http://127.0.0.1:8000/ 後顯示無法通路該網站,請檢查是不是浏覽器代理的問題。比如開啟了某些 VPN 代理服務等,将它們全部關閉即可。
這是 manage.py 的第一個用法,運作它的 runserver 指令開啟本地開發伺服器,以後我們還會遇到更多的指令。
指令欄工具下按 Ctrl + c 可以退出開發伺服器(按一次沒用的話連續多按幾次)。重新開啟則再次運作 python manage.py runserver 。
django 預設的語言是英語,是以顯示給我們的歡迎頁面是英文的。我們在 django 的配置檔案裡稍作修改,讓它支援中文。用任何一個文本編輯器打開 settings.py 檔案,找到如下的兩行代碼:
把 LANGUAGE_CODE 的值改為 zh-hans,TIME_ZONE 的值改為 Asia/Shanghai:
儲存更改後關閉 settings.py 檔案。
再次運作開發伺服器,并在浏覽器打開 http://127.0.0.1:8000/ ,可以看到 django 已經支援中文了。
一切準備就緒,開始進入我們的 django 部落格開發之旅吧!
作者:削微寒