在上一個項(xiàng)目,我們創(chuàng)建了一個名為myproject的虛擬環(huán)境屹徘,并在里面創(chuàng)建了一個 my_one的django項(xiàng)目走趋,以及一個 my_app1 的 Django app。
- Django 的 MTV 架構(gòu)噪伊,我們先來看看這個:
1.瀏覽器送出 HTTP request
2.Django 依據(jù) URL configuration 分配至對應(yīng)的 View
3.View 進(jìn)行資料庫的操作或其他運(yùn)算簿煌,并回傳 HttpResponse物件
4.瀏覽器依據(jù) HTTP response 顯示網(wǎng)頁頁面
下面我們將實(shí)踐這四個步驟:
- 發(fā)出一個HTTP request, http://127.0.0.1:8000/hello/
2.Django 依據(jù) URL configuration 分配至對應(yīng)的 View,注意我們提前要在view中的操作:
# my_app1/views.py
from django.http import HttpResponse
#從django.http模塊中引用 HttpResponse
def hello_world(request):
return HttpResponse("Hello World!")
- 宣告 hello_world這個view鉴吹,就是一個函數(shù)
- 當(dāng) hello_world被呼叫時姨伟,回傳包含字符串 HelloWorld! 的 HttpResponse 物件。
3.那么當(dāng)我們訪問1中的url拙寡,怎樣才會觸發(fā)到2中的hello_world(),并返回值呢授滓?很顯然,我們需要一個橋梁來連接兩邊。
這就是Django URL般堆,有人瀏覽 http://127.0.0.1:8000/hello/ 時 在孝,hello_world()這個view function 需要被執(zhí)行,而這個對應(yīng)關(guān)系就是 URL conf (URL configuration)淮摔。
現(xiàn)在我們來設(shè)定 Hello World 范例的 URL conf私沮。
# my_one/urls.py
from django.conf.urls import include, url
from django.contrib import admin
# Import view functions from trips app.
from my_app1.views import hello_world
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^hello/$', hello_world),
]
- 以上程式透過 url() function傳入兩個參數(shù) regex, view:url(regex, view)
regex -- 定義的 URL 規(guī)則
規(guī)則以 regular expression(正則表達(dá)式)來表示
r'^hello/$'代表的是 hello/這種 URL
view -- 對應(yīng)的 view function
指的是 hello_world這個 view
4.瀏覽器的頁面顯示:
hello world!