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


 

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視圖。

  接下來,我們為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配置


免責聲明!

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



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