第一個基於Django的頁面:Hello World
正如我們的第一個目標,創建一個網頁,用來輸出這個著名的示例信息:Hello world.
第一個視圖
Hello world視圖非常簡單。 這些是完整的函數和導入聲明,把它們輸入到views.py文件:
1 from django.http import HttpResponse 2 3 def hello(request): 4 return HttpResponse("Hello World!\nIt's my First django web!")
這里主要講的是: 一個視圖就是Python的一個函數。這個函數第一個參數的類型是HttpRequest;它返回一個HttpResponse實例。為了使一個Python的函數成為一個Django可識別的視圖,它必須滿足這兩個條件。
第一個URLConf
現在,如果你再運行:python manage.py runserver,你還將看到Django的歡迎頁面,而看不到我們剛才寫的Hello world顯示頁面。 那是因為我們的mysite項目還對hello視圖一無所知。我們需要通過一個詳細描述的URL來顯式的告訴它並且激活這個視圖。 (繼續我們剛才類似發布靜態HTML文件的例子。現在我們已經創建了HTML文件,但還沒有把它上傳至服務器的目錄。)為了綁定視圖函數和URL,我們使用URLconf。
URLconf 就像是 Django 所支撐網站的目錄。 它的本質是 URL 模式以及要為該 URL 模式調用的視圖函數之間的映射表。 你就是以這種方式告訴 Django,對於這個 URL 調用這段代碼,對於那個 URL 調用那段代碼。 例如,當用戶訪問/foo/時,調用視圖函數foo_view(),這個視圖函數存在於Python模塊文件view.py中。
前一章中執行 django-admin.py startproject 時,該腳本會自動為你建了一份 URLconf(即 urls.py 文件)。 默認的urls.py會像下面這個樣子:
1 from django.conf.urls import patterns, include, url 2 3 from django.contrib import admin 4 admin.autodiscover() 5 6 urlpatterns = patterns('', 7 # Examples: 8 # url(r'^$', 'myfirstsite.views.home', name='home'), 9 # url(r'^blog/', include('blog.urls')), 10 11 url(r'^admin/', include(admin.site.urls)), 12 )
讓我們逐行解釋一下代碼:
-
第1行導入django.conf.urls.defaults下的所有模塊,它們是Django URLconf的基本構造。 這包含了一個patterns函數
-
第11行調用 patterns() 函數並將返回結果保存到 urlpatterns 變量。
當前應該注意是 urlpatterns 變量, Django 期望能從 ROOT_URLCONF 模塊中找到它。 該變量定義了 URL 以及用於處理這些 URL 的代碼之間的映射關系。 默認情況下,URLconf 所有內容都被注釋起來了——Django 應用程序還是白版一塊。
如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python tuple即可. 這里演示如何添加view中hello功能.
1 from django.conf.urls.defaults import * 2 from mysite.views import hello 3 4 urlpatterns = patterns('', 5 ('^hello/$', hello), 6 )
這里需要做兩處修改。
-
首先,從模塊 (在 Python 的 import 語法中, mysite/views.py 轉譯為 mysite.views ) 中引入了hello 視圖。
-
接下來,我們為urlpatterns加上一行: (‘^hello/$’, hello), 這行被稱作URLpattern,它是一個Python的元組。元組中第一個元素是模式匹配字符串(正則表達式);第二個元素是那個模式將使用的視圖函數。
啟動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視圖輸出的字符串。
至此,第一個Django的web頁面完成。