Python 快速教程(Django01):初試天涯

發表於2015-11-18

Django是Python下的一款網路伺服器框架。Python下有許多款不同的框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP都基於Django。雖然Django之於Python,達不到Rail之於Ruby的一統江湖的地位,但Django無疑也是Python在網路應用方面的一位主將。

 

向昆汀的致敬,“被解放的姜戈”

 

Django意外的和昆汀的電影重名。這大大提高了Django的知名度。另外利用電影,宣傳了這個奇怪的詞的發音。

 

下面是姜戈的初體驗。 

 

安裝Django

啟動計算機中的Python,嘗試載入Django模組。如果可以成功載入,那麼說明Django已經安裝好:

 

如果Django還沒有安裝,可以在命令列,嘗試使用pip安裝:

或者使用easy_install:

 

黑夜中,姜戈和鐐銬說再見。

 

啟動

使用下面的命令建立專案:

 

在當前目錄下,將生成mysite資料夾。其檔案樹結構如下:

 

進入mysite,啟動伺服器:

上面的8000為埠號。如果不說明,那麼埠號預設為8000。

 

開啟瀏覽器,訪問http://127.0.0.1:8000,可以看到伺服器已經在執行:

雖然有一個能跑的伺服器,但什麼內容都沒有。

 

“賞金?獵人?” 姜戈滿臉困惑。

 

第一個網頁

在http協議中可以看到,網路伺服器是“請求-迴應”的工作模式。客戶向URL傳送請求,伺服器根據請求,開動後廚,並最終為客人上菜。Django採用的MVC結構,即點單、廚房、儲藏室分離。

 

我們需要一個指揮員,將URL對應分配給某個物件處理,這需要在mysite/mysite下的urls.py設定。Python會根據該程式,將URL請求分給某個廚師。

 

將urls.py修改為:

我們新增了最後一行。它將根目錄的URL分配給一個物件進行處理,這個物件是mysite.views.first_page。

用以處理HTTP請求的這一物件還不存在,我們在mysite/mysite下建立views.py,並在其中定義first_page函式:

第一行說明字元編碼為utf-8,為下面使用中文做準備。first_page函式的功能,是返回http回覆,即這裡的

世界好

。first_page有一個引數request,該引數包含有請求的具體資訊,比如請求的型別等,這裡並沒有用到。

 

頁面效果如下:

 

姜戈接過槍,一槍射出去。“天哪!” 德國人驚呆了。 

 

增加app

一個網站可能有多個功能。我們可以在Django下,以app為單位,模組化的管理,而不是將所有的東西都丟到一個資料夾中。在mysite下,執行manange.py,建立新的app:

這個新的app叫做west,用來處理西餐。

 

我們的根目錄下,出現了一個新的叫做west的資料夾。

 

我們還需要修改專案設定,說明我們要使用west。在mysite/setting.py中,在INSTALLED_APPS中,增加”west”:

可以看到,除了新增加的west,Django已經預設載入了一些功能性的app,比如使用者驗證、會話管理、顯示靜態檔案等。我們將在以後講解它們的用途。

 

姜戈看到曾經的工頭們,眼中充滿怒火。

 

增加APP頁面

我們下面為APP增加首頁。我們之前是在mysite/urls.py中設定的URL訪問物件。依然採用類似的方式設定。

另一方面,為了去耦合,實現模組化,我們應該在west/urls.py中設定URL訪問物件。具體如下:

 

首先,修改mysite/urls.py:

注意新增加的最後一行。這裡,我們提醒指揮員,對於west/的訪問,要參考west/urls.py。

 

隨後,我們建立west/urls.py,新增內容:

將URL對應west下,views.py中的first_page函式。

 

最後,在west下,修改views.py為:

訪問http://127.0.0.1:8000/west,檢視效果。

 

“你們這些混蛋,我一個都不會放過!” 姜戈大吼。

 

總結

可以看到,Django的建立過程非常簡單。但這只是初次嘗試Django。為了建立一個完整功能的網站,還需要呼叫Django許多其它的功能。

 

姜戈的解放,才剛剛開始。

相關文章