1. 程式人生 > >[Python] 利用Django進行Web開發系列(二)

[Python] 利用Django進行Web開發系列(二)

回到頂部

1 編寫第一個靜態頁面——Hello world頁面

  Step1:建立檢視檔案

  在編寫第一個頁面之前,我們首先要在mysite目錄下建立一個名稱為views.py的檔案。當然,命名是沒有要求的,你也可以命名為a.py,b.py... ... 根據自己的喜好命名就行。在已建立好的views.py中寫入如下程式碼,並儲存:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world! This is my first trial. [Poll的筆記]
")

  我們逐行分析一下這段程式碼:

  首先,我們從django.http模組匯入HttpResponse類。

  接下來,我們定義一個叫做hello的檢視函式。每個檢視函式至少要有一個引數,通常被叫作request。這是一個觸發這個檢視、包含當前Web請求資訊的物件,是類django.http.HttpResponse的一個例項。在這個示例中,我們雖然不用request做任何事情,然而它仍必須是這個檢視的第一個引數。注意檢視函式的名稱並不重要;並不一定非得以某種特定的方式命名才能讓Django識別它。 在這裡我們把它命名為:hello,是因為這個名稱清晰的顯示了檢視的用意。同樣地,你可以用諸如:hello_wonderful_beautiful_world,這樣難看的短句來給它命名。

  這個函式只有簡單的一行程式碼: 它僅僅返回一個HttpResponse物件,這個物件包含了文字“Hello world”。

  在這裡要記住的是:一個檢視就是Python的一個函式。這個函式第一個引數的型別是HttpRequest;它返回一個HttpResponse例項。為了使一個Python的函式成為一個Django可識別的檢視,它必須滿足這兩個條件。 

  Step2:進行URL配置

  現在,如果你再執行:python manage.py runserver,你還將看到Django的歡迎頁面,而看不到我們剛才寫的Hello world顯示頁面。 那是因為我們的mysite專案還對hello檢視一無所知。我們需要通過一個詳細描述的URL來顯式的告訴它並且啟用這個檢視。為了繫結檢視函式和URL,我們使用URLconf。

  URLconf 就像是 Django 所支撐網站的目錄。 它的本質是 URL 模式以及要為該 URL 模式呼叫的檢視函式之間的對映表。 你就是以這種方式告訴 Django,對於這個 URL 呼叫這段程式碼,對於那個 URL 呼叫那段程式碼。 例如,當用戶訪問/foo/時,呼叫檢視函式foo_view(),這個檢視函式存在於Python模組檔案view.py中。上一篇博文中執行django-admin.py startproject時,該指令碼會自動為你建了一份URLconf,即urls.py檔案。

  如果想在URLconf中加入URL和view,只需增加對映URL模式和view功能的Python tuple即可. 這裡演示如何新增view中hello功能。

複製程式碼
from django.conf.urls import *
from mysite.views import hello

urlpatterns = patterns('',
    ('^hello/$', hello),
)
複製程式碼

  我們逐行分析一下這段程式碼:

  首先,我們從模組中引入了hello檢視。

  接下來,我們為urlpatterns加上一行: (‘^hello/$’, hello), 這行被稱作URLpattern,它是一個Python的元組。元組中第一個元素是模式匹配字串(正則表示式);第二個元素是那個模式將使用的檢視函式。   urlpattern中包含了一個尖號(^)和一個美元符號($)。這些都是正則表示式符號,並且有特定的含義: 上箭頭要求表示式對字串的頭部進行匹配,美元符號則要求表示式對字串的尾部進行匹配。有關正則表示式的知識可以看我的另一篇博文《[Python] 網路爬蟲和正則表示式學習總結》。   簡單來說,這段程式碼只是告訴Django,所有指向URL:/hello/的請求都應由hello這個檢視函式來處理。   Step3:啟動Django伺服器檢視頁面   啟動Django開發伺服器來測試修改好的 URLconf, 執行命令列python manage.py runserver。開發伺服器的地址是http://127.0.0.1:8000/ ,開啟你的瀏覽器訪問 http://127.0.0.1:8000/hello/ 。 你就可以看到輸出結果了。開發伺服器將自動檢測Python程式碼的更改來做必要的重新載入, 所以你不需要重啟Server在程式碼更改之後。伺服器執行地址”http://127.0.0.1:8000/“,所以開啟瀏覽器直接輸入“http://127.0.0.1:8000/hello/”,你將看到由你的Django檢視輸出頁面如下所示:
  看到第一個自己成功編寫的Web頁面,樓主還有點小激動(^_^)。

  總結一下:

  1. 進來的請求轉入/hello/。

  1. Django通過在ROOT_URLCONF配置來決定根URLconf。

  1. Django在URLconf中的所有URL模式中,查詢第一個匹配/hello/的條目。 

  1. 如果找到匹配,將呼叫相應的檢視函式。

  1. 檢視函式返回一個HttpResponse。

  1. Django轉換HttpResponse為一個適合的HTTP response,以Web page顯示出來。

  其實做一個Django-powered頁面了,只需要寫檢視函式並用 URLconfs把它們和URLs對應起來就ok了。

回到頂部

2 編寫第一個動態頁面——current time頁面

  我們的Hello world檢視是用來演示基本的Django是如何工作的,但是它不是一個動態網頁的例子,因為網頁的內容一直是一樣的. 每次去檢視/hello/,你將會看到相同的內容,它類似一個靜態HTML檔案。在第二個例子裡,博主通過一個顯示當前時間的頁面來簡單示範一下動態頁面。動態頁面和靜態頁面的編寫是一樣的,兩部分:建立檢視和配置URL。

  檢視檔案views.py程式碼如下:

from django.http import HttpResponse
import time

def current_time(request):
    return HttpResponse("Current time is: "+time.strftime('%Y-%m-%d %H:%M:%S'))

  URLconf檔案urls.py程式碼如下:

複製程式碼
from django.conf.urls import *
from mysite.views import current_time

urlpatterns = patterns('',
    ('^current_time/$', current_time),
)
複製程式碼

  然後我們通過網址http://127.0.0.1:8000/current_time/就可以看到編寫的第一個動態頁面了,它顯示的內容是你訪問該頁面時的當前時間,如下圖所示:

  看到這裡,大家是不是感覺利用python Django進行Web開發真的很簡單。當然,我們頁面實在是太單薄了,不光沒有啥模板科研,就連一些顏色都沒有,哈哈,不過後邊樓主會慢慢學習,並和大家分享經驗。相信經過這系列的努力,最後一定可以隨心所欲地設計出一個屬於自己的完美的頁面。

回到頂部

3 參考內容

  [1] Django book 第三章:檢視和URL配置