django框架--檢視系統
目錄
一、檢視函式的理解
檢視函式的作用是,對指定的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,就是多了渲染的流程。