HelloDjango 第 01 篇:開始進入 django 之旅


文中所有示例代碼的倉庫地址: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。

安裝 Python

Windows 下安裝 Python 非常簡單,去 Python 官方網站找到 Python 3 的下載地址,根據你的系統選擇 32 位或者 64 位的安裝包,下載好后雙擊安裝即可。

安裝完后檢測 Python 是否可以正常運行。在命令行輸入 python -V ,如果輸出了 Python 的版本號,說明 Python 已安裝成功。

> python -V
Python 3.6.4

提示:

如果提示命令未找到,而你又確定已經安裝了 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:

> pip install virtualenv

安裝成功后就可以開始創建虛擬環境,指定一個你喜歡的目錄,virtualenv 會把這個新的虛擬環境裝到你指定目錄下。例如我把它裝到 C:\Users\yangxg\.virtualenvs 目錄下,並將虛擬環境命名為 blogproject_virtualenv(也可以取任何你喜歡的名字)。在命令欄運行如下命令:

> virtualenv C:\Users\yangxg\.virtualenvs\blogproject_virtualenv

虛擬環境已經創建好了,我們需要激活這個環境,進入到剛才創建的虛擬環境的根目錄,運行 Scripts 目錄下的 activate 程序激活它:

> cd C:\Users\yangxg\.virtualenvs\blogproject_virtualenv
> .\Scripts\activate
(blogproject_virtualenv) >

注意

Linux 下沒有 Scripts\ 這個目錄,取而代之的是 bin/ 目錄。且激活命令為:

$ source ./bin/activate

可以看到命令提示符前面多了 (blogproject_virtualenv),說明我們已經成功激活了虛擬環境,接下來就可以開始安裝 django 了。

注意:

如果使用 PowerShell,微軟默認不允許執行 ps1 腳本,如果你得到如下錯誤:

+CategoryInfo          : SecurityError:(:) [],PSSecurityException
+FullyQualifiedErrorId : UnauthorizedAccess

需要修改 PowerShell 的腳本執行策略以允許 ps1 腳本運行,命令為 Set-ExecutionPolicy RemoteSigned:

> Set-ExecutionPolicy RemoteSigned

執行策略更改
執行策略可幫助你防止執行不信任的腳本。更改執行策略可能會產生安全風險,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 幫助主題所述。是否要更改執行策略?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暫停(S)  [?] 幫助 (默認值為“N”): Y

即將執行策略修改為允許執行被信任的且由發布者簽名的下載自 Internet 的腳本。

Pipenv 創建和管理虛擬環境

首先通過命令 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 可以查看到項目對應的虛擬環境的具體位置:

> pipenv --venv
C:\Users\yangxg\.virtualenvs\HelloDjango-blog-tutorial-VDQF8f6V

安裝 Django

django 的官方文檔對 如何安裝 django 給出了詳細且明確的指導,不過我們目前用不上這些,只需使用 pipenv 命令就可以解決問題。進入項目根目錄,運行:

> pipenv install django==2.2.3

我們用 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。

> pipenv run python
(HelloDjango-blog-tutorial-VDQF8f6V) > python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD6Type "help", "copyright", "credits" or "license" for more information.

>>> import django
>>> print(django.get_version())
2.2.3

建立 Django 工程

萬事已經具備了,讓我們來建立 django 項目工程。

django 工程(Project)是我們項目代碼的容器,例如我們博客項目中所有的代碼(包括 django 為我們自動生成的以及我們自己寫的)都包含在這個工程里。其實說通俗一點就是用一個文件夾把一系列 Python 代碼文件和 django 配置文件包裹起來,這個文件夾就可以看做一個 django 工程。我們不必親自動手新建這個文件夾和代碼文件,django 的內置命令已經幫我們做了這些事情。例如我把博客工程的代碼放在C:\Users\yangxg\SpaceLocal\Workspace\G_Courses\HelloDjango-blog-tutorial 目錄下,工程名我把它叫做 blogproject,那么在項目根目錄運行如下命令創建工程:

> pipenv run django-admin startproject blogproject C:\Users\yangxg\SpaceLocal\Workspace\G_Courses\HelloDjango-blog-tutorial

django-admin startproject 命令用來初始化一個 django 項目,它接收兩個參數,第一個是項目名 blogproject,第二個指定項目生成的位置,因為之前我們為了使用 Pipenv 創建了項目根目錄,所以將項目位置指定為此前創建的位置。

進入工程所在目錄 C:\Users\yangxg\SpaceLocal\Workspace\G_Courses\HelloDjango-blog-tutorial(你可能設置在其它路徑),會發現多了一個 blogproject\ 的目錄,整個項目的文件結構如下:

HelloDjango-blog-tutorial\
	Pipfile
	Pipfile.lock
    manage.py
    blogproject\
        __init__.py
        settings.py
        urls.py
        wsgi.py

最頂層的 HelloDjango-blog-tutorial\ 目錄是我們剛剛指定的項目根目錄。HelloDjango-blog-tutorial\ 目錄下面有一個 manage.py 文件,manage 是管理的意思,顧名思義 manage.py 就是 django 為我們生成的管理這個項目的 Python 腳本文件,以后用到時會再次介紹。與 manage.py 同級的還有一個 blogproject\ 的目錄,這里面存放了一些 django 的配置文件,例如 settings.py、urls.py 等等,以后用到時會詳細介紹。

Hello Django

網站需要運行在一個 Web 服務器上,django 已經為我們提供了一個用於本地開發的 Web 服務器。在命令行工具里進入到 manage.py 所在目錄,即 HelloDjango-blog-tutorial\ 目錄下。運行 pipenv run python manage.py runserver 命令就可以在本機上開啟一個 Web 服務器:

> pipenv run python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
July 05, 2019 - 21:05:37
django version 2.2.3, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

看到這樣的信息表明我們的服務器開啟成功。

在瀏覽器輸入 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 文件,找到如下的兩行代碼:

HelloDjango-blog-tutorial/blogproject/settings.py

## 其它配置代碼...

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

## 其它配置代碼...

LANGUAGE_CODE 的值改為 zh-hansTIME_ZONE 的值改為 Asia/Shanghai

HelloDjango-blog-tutorial/blogproject/settings.py

## 其它配置代碼...

# 把英文改為中文
LANGUAGE_CODE = 'zh-hans'

# 把國際時區改為中國時區(東八區)
TIME_ZONE = 'Asia/Shanghai'

## 其它配置代碼...

保存更改后關閉 settings.py 文件。

再次運行開發服務器,並在瀏覽器打開 http://127.0.0.1:8000/ ,可以看到 django 已經支持中文了。

一切准備就緒,開始進入我們的 django 博客開發之旅吧!

歡迎關注 HelloGitHub 公眾號,獲取更多開源項目的資料和內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM