為什麼寫這個教程?
我從去年開始接觸 Python,為了能讓學習 Python 的過程不那麼枯燥,我決定一邊學習 Python 的同時一邊利用所學的東西開發一個網站。在權衡了多個 Python 界流行的 Web 框架後,我決定選擇django。
然而 django 在國內的 Web 開發者中使用率其實並不高(不僅僅是 django,包括其他 Python Web 框架例如 Flask 等也面臨同樣的境遇),於是尋找合適的學習資料成了一件苦差。在兩個多月的時間內,我閱讀 The Django Book2.0 中文版(其內容已經嚴重過時),然後從網上搜到了一個利用 django 開發一個簡單的個人博客的教程,然而其中遇到的各種坑讓我在經歷了一個月的痛苦發開後徹底放棄了 django。django 高質量的中文學習資料實在太少了,而且中文社區支持也不友好,新人在開發中遇到問題通常求助無門。
大概在幾個月前,我利用空閒的時間開始學習 django 的官方文檔,特別是其入門教程的 6 個 Parts 循序漸進,既覆蓋了 django 大部分的核心特性,又對新人十分友好,這重新激起了我對 django 的興趣。於是我心血來潮地在網上發起了一個組建 django 五人學習小組的活動,很快便得到了大家的響應。我們以互相分享各自所學的 django 知識並且利用這些知識合作開發一個項目的形式,順利地開發了一個 django 個人博客和一個 django 社區應用,並且還發布了一套 django 博客教程,但是由於當時自己也是學習 django 不久,對 django 的掌握程度還很不夠,教程也比較簡略,對想學習 django 的開發者依然不夠友好。
官方文檔的入門教程已經非常好了,但一方面其在語言方面(英語,在一些國內開發者的貢獻下現在也有了非官方的中文翻譯版本)會對國內的一些開發者產生一定的困擾,另一方面它教我們一步步開發一個簡單的投票應用,我感覺這稍稍會有一點枯燥和不實用。所以我決定編寫這一套教程,帶領想要學習 django 開發的朋友一步步開發一個個人博客,旨在順便代替 django 官方文檔中的入門教程,讓開發的過程更加有趣一點,讓開發出來的東西更加實用一點。這個博客已經具備個人博客該有的基本功能,我們可以把代碼部署到生產伺服器上開始使用。
誰適合這個教程?
這個教程的目的是一步步地帶著大家使用 django 開發一個博客。我假設你以前從未接觸過 django 但想成為一名 django 開發者,或者你略微了解過 django 但對如何使用 django 進行開發依然有一些困惑,或者是從其它的 Web 編程框架轉過來的開發者。同時我假設你已經具備以下一些基本條件:
了解最基本的 Python 語法,或者你從未學習過 Python 但是有學習其他程式語言的經歷。
了解最基本的 HTML,如果你完全不知道 HTML是個什麼東西,建議花費 2-3 天時間學習這個不錯的 HTML 教程。
(最好具備但不是必須的)HTTP 相關的基本概念,如果你目前完全沒有概念也沒關係,我會在教程中做適當講解,但那時如果你依然不懂,建議花費幾天時間學習其基本概念。
總之,django 博客教程完全面向新人,教程將帶你一步步地(Step By Step)使用 django 開發一個博客,教程和官方文檔的入門教程一樣,涵蓋了 django 開發的大部分核心特性,並且盡我所能地做到對新人友好。同時我也為大家提供了一個交流的社區(下面會介紹),以便在開發中遇到問題能得到及時的幫助。
項目預覽與代碼託管方式
教程最終開發的博客將是這個樣子:django 博客教程演示項目
代碼託管在 GitHub(https://github.com/zmrenwu/django-blog-tutorial),每篇教程的代碼都放在單獨的分支中,分支名看起來像是下面的樣子,先後順序我想應該很容易識別:
Step1_build-development-environment
Step2_create-blog-app
互動方式
教程以 Step by Step 的形式,一步步帶讀者使用 django 開發一個博客。通常情況下,只要你完全依照教程的指導,你將順利地完成博客系統的開發。但儘管如此,由於開發環境的差異,即使你嚴格按照教程裡的指導,依然有可能遇到無法預料的異常。如果你個人無法解決這些問題,你可以通過以下方式尋求幫助,這可以幫你以最快的速度解決問題。
對於簡單的問題,請在我個人博客的評論區留言,每天我都會查看新的留言並且回復相關的問題。
註:由於本教程會被轉載到各大博客平臺,不是每個平臺下的留言我都會看到並回復。因此建議統一到我個人博客下留言,或者採用下面的方式。
(推薦)對於比較複雜的問題,請到社區發帖求助。同樣我也會每天查看新發表的帖子,並且予以回復。在這裡求助的另一個好處是其他人也能看到你的問題,並且給予建議和幫助。社區地址:http://pythonzh.cn/
本教程使用的開發環境
本教程寫作時開發環境的系統平臺為 Windows 10(64 位),Python 版本為 3.5.2 (64 位),django 版本為 1.10.6。建議儘可能地與教程的開發環境保持一致(尤其是 Python 與 django 版本)。建議的 Python 版本為 3.4 或以上,django 版本號必須為 1.10.x。
安裝 Python
Windown 下安裝 Python 非常簡單,去這裡找到 Python 3.5 的下載地址,根據你的系統選擇 32 位或者 64 位的安裝包,下載好後雙擊安裝即可。如果遇到問題,建議嘗試百度相關教程。如果始終無法解決,可以到社區發帖求助。
安裝完後檢測一下 Python 是否可以正常運行。在命令行輸入 python -v,如果成功輸出了 Python 的版本號,說明已經安裝成功了。如果提示命令未找到,而你又確定已經安裝了 Python,多半是因為沒有把 Python 添加到環境變量。
C:\WINDOWS\system32>python -V
Python 3.5.2
Virtualenv強烈推薦在 virtualenv(虛擬環境)下進行 django 的開發。什麼是 virtualenv?virtualenv 是一個 Python 工具,使用它可以創建一個獨立的 Python 環境。舉個例子,假設你已經在系統中安裝了 Python,並且在閱讀此教程前你還進行過一些 django 的學習,因此你通過 pip install django 安裝了 django,但不幸的是那時候安裝的 django 還是 1.8 版本。現在我們教程使用的是最新版的 django 1.10.6,你肯定不願意刪除掉舊版的 django 1.8,因為那可能導致你以前的那個項目無法運行了。我既想讓原本項目在 django 1.8 環境下運行,又想再安裝 django 1.10.6 開啟一個新項目,怎麼辦呢?使用 virtualenv 就能解決這個問題。它幫我們從系統的 Python 中克隆一個全新的環境出來,這個環境獨立於原來的 Python 環境,我們可以在這個新的運行環境下安裝 django 1.10.6,並且在這個新環境下運行我們的新項目。virtualenv 的使用非常簡單,下面看看如何使用。
首先安裝它,打開命令行工具,輸入:
C:\WINDOWS\system32>pip install virtualenv
安裝成功後創建虛擬環境,指定一個你喜歡的目錄,virtualenv 會把這個新的虛擬環境裝到你指定目錄下,例如我把它裝到 C:\Users\yangxg\Envs 目錄下,我把虛擬環境命名為 blogproject_env(也可以取任何你喜歡的名字),在命令欄運行如下命令:
C:\WINDOWS\system32>virtualenv C:\Users\yangxg\Envs\blogproject_env
新環境已經創建好了,我們需要進入這個環境,運行 blogproject_env\Scripts 目錄下的 activate 程序激活它:
C:\WINDOWS\system32>C:\Users\yangxg\Envs\blogproject_env\Scripts\activate
(blogproject_env) C:\WINDOWS\system32>
此時看到命令提示符前面多了一個 (blogproject_env),說明我們已經成功進入了虛擬環境,接下來就可以開始安裝 django 了。
安裝 django(blogproject_env) C:\WINDOWS\system32>pip install django==1.10.6
我們用 django==1.10.6 來安裝指定的 django 版本以保證和教程的版本一致,避免不必要的麻煩。如果直接 pip install django 的話有可能安裝最新的 django 版本,而不是 1.10.6。
注意命名提示符前的 (blogproject_env) 確保你始終處在虛擬環境中,如果你不小心退出了虛擬環境,先按上面的步驟重新進入再安裝 django。
順便測試一下安裝是否成功,現在命令行輸入 python 以打開 Python 自帶的命令欄,然後輸入import django,如果沒有報錯就說明 django 安裝成功,最後通過 print(django.get_version())列印出 django 的版本號,確保安裝了正確版本的 django :
(blogproject_env) C:\WINDOWS\system32>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
1.10.6
>>>
版權聲明本作品採用知識共享署名-非商業性使用-禁止演繹 3.0 中國大陸許可協議進行許可。
Python 中 文 社 區
Python中文開發者的精神家園
合作、投稿請聯繫微信:
pythonpost
本文為作者原創作品,未經作者授權同意禁止轉載
點擊閱讀原文可搜索歷史文章