在前面的介紹,我們有提到 Django 的 MTV 架構(gòu)。其處理 request 的流程如下:
這一章,我們將透過 Hello World 范例 ,瞭解 Django 如何處理一個 request 的流程。
Django view 其實是一個 function,處理 HttpRequest 物件,并回傳 HttpResponse 物件,大致說明如下:
會收到HttpRequest 物件
參數(shù): Django 從網(wǎng)頁接收到 request 后,會將 request 中的資訊封裝產(chǎn)生一個 HttpRequest 物件,并當(dāng)成第一個參數(shù),傳入對應(yīng)的 view function。
需要回傳HttpResponse物件
:HttpResponse 物件裡面包含:
首先建立一個名為 hello_world 的 View。
在trips/views.py
輸入下列程式碼:
# trips/views.py
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello World!")
以上程式在做的事就是:
HttpResponse
類別Hello World!
的 HttpResponse 物件。最后,Django 需要知道 URL 與 View 的對應(yīng)關(guān)係。
例如:
有人瀏覽
http://127.0.0.1:8000/hello/ ,hello_world()
這個 view function 需要被執(zhí)行。
而這個對應(yīng)關(guān)係就是 URL conf
(URL configuration)。
URL Conf
urls.py
現(xiàn)在我們來設(shè)定,Hello World 范例的 URL Conf:
打開 startproject 時自動產(chǎn)生的urls.py
,先 import 剛剛寫的 view function,然后在 urlpatterns
中加入下面這行:
url(r'^hello/$', hello_world),
現(xiàn)在 mysite/urls.py
的內(nèi)容應(yīng)該會像下面這樣:
# mysite/urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
# import view functions from trips app
from trips.views import hello_world
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^hello/$', hello_world),
)
以上程式透過 url() function 傳入兩個參數(shù) regex
, view
:
url(regex,view)
regex -- 定義的 URL 規(guī)則
r'^hello/$' 代表的是 hello/
這種 URL
view -- 對應(yīng)的 view function
hello_world()
這個 viewtrips
裡的 views.py
中的 hello_world()
function現(xiàn)在,啟動你的 web server。 (如果剛剛沒關(guān)閉的話,通常 Django 會在你修改程式碼后,自動重新啟動 web server)
python manage.py runserver
在瀏覽器輸入
http://127.0.0.1:8000/hello/,你會看到網(wǎng)頁顯示我們在 HttpResponse 傳入的文字Hello World!
。
更多建議: