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