django架構--視圖系統

來源:互聯網
上載者:User

標籤:圖片   虛擬碼   ica   方式   *args   系統   封裝   進一步   應對   

目錄

  • 一、視圖函數的理解
  • 二、視圖函數的定位
  • 三、請求對象HttpRequest
  • 四、響應對象HttpResponse
一、視圖函數的理解

視圖函數的作用是,對指定的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,就是多了渲染的流程。

django架構--視圖系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.