99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Views and URLconfs

2020-06-15 17:39 更新

Views and URLconfs

Django 處理 HTTP request 產(chǎn)生 response 的流程

在前面的介紹,我們有提到 Django 的 MTV 架構(gòu)。其處理 request 的流程如下:

  1. 瀏覽器送出 HTTP Request
  2. Django 依據(jù) URL Conf 分配至對(duì)應(yīng)的 View
  3. View 進(jìn)行資料庫(kù)的操作或其他運(yùn)算,并回傳 Http Response 物件
  4. 瀏覽器依據(jù) HTTP Response,顯示網(wǎng)頁畫面

這一章,我們將透過 Hello World 范例 ,瞭解 Django 如何處理一個(gè) request 的流程。

Django Views

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 物件裡面包含:

  • HttpResponse.content
  • HttpResponse.status_code ...等

建立第一個(gè) View

首先建立一個(gè)名為 hello_world 的 View。

trips/views.py輸入下列程式碼:

# trips/views.py

from django.http import HttpResponse

def hello_world(request):
    return HttpResponse("Hello World!")

以上程式在做的事就是:

  1. 從 django.http 模組中引用 HttpResponse 類別
  2. 宣告 hello_world 這個(gè) View
  3. 當(dāng) hello_world 被呼叫時(shí),回傳包含字串 Hello World!HttpResponse 物件。

Django Urls

最后,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
  • 是一連串的規(guī)則 (url pattern)
  • Django 收到 request 時(shí),會(huì)一一比對(duì) URL Conf 中的規(guī)則,決定要執(zhí)行哪個(gè) view function

現(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ī)則

  • 規(guī)則以 regular expression 來表達(dá)
  • r'^hello/$' 代表的是 hello/ 這種 URL

  • view -- 對(duì)應(yīng)的 view function

  • 指的是 hello_world() 這個(gè) view
  • 'trips.views.hello_world' -- trips 裡的 views.py 中的 hello_world() function

測(cè)試 Hello World

現(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!。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)