django框架--檢視系統
目錄
- 三、請求物件 HttpRequest
- 四、響應物件 HttpResponse
一、檢視函式的理解
檢視函式的作用是,對指定的 url
執行業務邏輯,檢視函式將會作為 model
層和 template
層的橋樑,最主要的邏輯是操作資料庫以及完成模板渲染前的上下文準備。
檢視系統的模組:
- 請求物件
- 業務邏輯
2.1 連線model
層
2.2 連線template
層 - 響應物件
二、檢視函式的定位
所有實現 wsgi
協議的 web
框架都必須實現如下介面形式的 application
函式,完成對 http
請求的 http
響應, web
應用程式和 web
伺服器的分界即從此函式開始。
application
函式在 web
應用程式中被定義,而在 wsgi
伺服器( web
伺服器)上被無限迴圈呼叫,在 django
中, application
函式中會通過路由系統根據 url
來尋找對應的 view
,然後執行 view
檢視函式處理業務邏輯。
# 虛擬碼 def application(environ, start_response): # 此函式在web應用程式上被定義,在web伺服器上被無限迴圈呼叫 view = route(environ.url)# 路由系統 response = view(environ, *args, **kw)# 檢視系統 return response
django檢視功能定點陣圖示
檢視函式的本質作用就是:接收一個 reqeust
請求,正確處理,然後返回一個 reponse
響應。
為了方便在檢視函式中處理請求與響應, reqeust
請求報文在 web
框架中被封裝成 HttpRequest
請求物件,而 reponse
響應報文也被封裝成 HttpResponse
響應物件。
所以檢視函式中,除了處理邏輯之外,還有兩個重要的物件,就是請求物件和響應物件。
三、請求物件HttpRequest
請求物件就是對 http
請求報文的封裝, django
自動執行封裝並傳入檢視函式第一引數,我們需要在檢視函式中呼叫。
請求物件中有很多需要被進一步處理的資料,常用的介面如下:
常用介面: HttpRequest.method請求方法 HttpRequest.GET對應GET請求型別的資料字典 HttpRequest.POST對應POST請求型別的資料字典 HttpRequest.path請求的路徑 HttpRequest.get_full_path()請求的路徑+get資料 HttpRequest.is_ajax()判斷是否為ajax形式的請求
四、響應物件HttpResponse
響應物件就是對 http
響應報文的封裝,響應物件需要我們在檢視函式中建立,並在檢視函式最後 return
給上層函式即底層控制迴圈。響應物件意味著 web
服務程式通過業務邏輯處理後返回的響應資訊。
在檢視函式中返回響應物件主要有兩種形式的方法:
方式1: 以字串字面量為介面: return HttpResponse('xxx')
,直接返回的字串會作為 html
頁面的內容,會被瀏覽器所執行, 即,可以返回一個 <h1>xxx</h1>
方式2: 以 html
檔案或模板檔案為介面: return render(request, 'index.html', {xxx})
,可以直接返回最終形態的 html
字串。通過 render
函式呼叫渲染引擎對模板檔案執行渲染操作,
模板檔案中包含模板語法,這些模板語法被認為是 html
檔案中的佔位符,用於後續填充動態資料, render
函式內部最後會執行 return HttpResponse
操作。
注意:為了提高安全性, render
函式在處理 {xxx}
渲染上下文時,如果包含有可執行的 html
資料的時候會 自動轉義成特殊字元 ,這主要是為了防止插入類似 link
或者 script
等這些瀏覽器會執行的 html
程式碼給客戶端帶來的安全性問題。 render
函式流程是進行渲染得到 http
響應報文中的響應體字串,然後再返回一個 HttpResponse
物件,這相對於方式1,就是多了渲染的流程。