1 編寫第一個靜態頁面——Hello world頁面
在上一篇博客《[Python] 利用Django進行Web開發系列(一)》中,我們創建了自己的目錄mysite。
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視圖。

總結一下:
-
進來的請求轉入/hello/。
-
Django通過在ROOT_URLCONF配置來決定根URLconf。
-
Django在URLconf中的所有URL模式中,查找第一個匹配/hello/的條目。
-
如果找到匹配,將調用相應的視圖函數。
-
視圖函數返回一個HttpResponse。
-
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配置