1. 程式人生 > >django框架--檢視系統

django框架--檢視系統

目錄

一、檢視函式的理解

檢視函式的作用是,對指定的url執行業務邏輯,檢視函式將會作為model層和template層的橋樑,最主要的邏輯是操作資料庫以及完成模板渲染前的上下文準備。 檢視系統的模組:

  1. 請求物件
  2. 業務邏輯 2.1 連線model層 2.2 連線template
  3. 響應物件

二、檢視函式的定位

所有實現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,就是多了渲染的流程。