Django 框架 django的請求生命週期

2022-07-19 00:42:13 字數 3225 閱讀 7982

概述

首先我們知道http請求及服務端響應中傳輸的所有資料都是字串,同時http請求是無狀態的,可以通過session和cookie來輔助。

瀏覽器通過ip和埠及路由方式訪問服務端.

在django中,當我們訪問乙個的url時,會通過路由匹配進入相應的html網頁中.

django的請求生命週期是指當使用者在瀏覽器上輸入url到使用者看到網頁的這個時間段內,django後台所發生的事情

而django的生命週期內到底發生了什麼呢??

1. 當使用者在瀏覽器中輸入url時,瀏覽器會生成請求頭和請求體發給服務端

請求頭和請求體中會包含瀏覽器的動作(action),這個動作通常為get或者post,體現在url之中.

2. url經過django中的wsgi,再經過django的中介軟體,最後url到過路由對映表,在路由中一條一條進行匹配,

一旦其中一條匹配成功就執行對應的檢視函式,後面的路由就不再繼續匹配了. wsgi---->中介軟體------->url路由表--------->檢視函式

3. 檢視函式根據客戶端的請求查詢相應的資料.返回給django,然後django把客戶端想要的資料做為乙個字串返回給客戶端.

4. 客戶端瀏覽器接收到返回的資料,經過渲染後顯示給使用者.

檢視函式根據客戶端的請求查詢相應的資料後.如果同時有多個客戶端同時傳送不同的url到服務端請求資料

服務端查詢到資料後,怎麼知道要把哪些資料返回給哪個客戶端呢??

因此客戶端發到服務端的url中還必須要包含所要請求的資料資訊等內容.

例如  這個url中,

客戶端通過get請求向服務端傳送的 nid=user 的請求,服務端可以通過 request.get.get("

nid") 的方式取得nid資料

客戶端還可以通過post的方式向服務端請求資料.

當客戶端以post的方式向服務端請求資料的時候,請求的資料報含在請求體裡,這時服務端就使用 request.post 的方式取得客戶端想要取得的資料

需要注意的是,request.post是把請求體的資料轉換乙個字典,請求體中的資料預設是以字串的形式存在的.

乙個url對應乙個檢視函式,這個模式叫做fbv(function base views)

除了fbv之處,django中還有另外一種模式叫做cbv(class base views),即乙個url對應乙個類

例子:使用cbv模式來請求網頁

路由資訊:  

urlpatterns =[

url(r

'^fbv/

',views.fbv),

url(r

'^cbv/

',views.cbv.as_view()), #必須是as_view,這是固定寫法

]

檢視資訊:

from django.views import

view

class

cbv(view):

defget(self,request): #get請求時觸發

return render(request, "

cbv.html")

defpost(self,request):       #post請求時觸發

使用者傳送url請求,django會依次遍歷路由對映表中的所有記錄,一旦路由對映表其中的一條匹配成功了,

就執行檢視函式中對應的函式名,這是fbv的執行流程

當服務端使用cbv模式的時候,使用者發給服務端的請求包含url和method,這兩個資訊都是字串型別

服務端通過路由對映表匹配成功後會自動去找dispatch(django內建方法)方法,然後django會通過dispatch反射的方式找到類中對應的方法並執行

類中的方法執行完畢之後,會把客戶端想要的資料返回給dispatch方法,由dispatch方法把資料返回經客戶端

http提交資料的方式有"

post

","get

","put

","patch

","delete

","head

","options

","trace

".提交資料的時候,服務端依據method的不同會觸發不同的檢視函式.

注意:對於from表單來說,提交資料只有get和post兩種方法

另外的方法可以通過ajax方法來提交

服務端根據個人請求資訊的不同來運算元據庫,可以使用原生的sql語句,也可以使用django的orm語句.

django從資料庫中查詢處理完使用者想要的資料,將結果返回給使用者.

從django中返回的響應內容包含響應頭和響應體

在django中,有的時候乙個檢視函式,執行完成後會使用httpresponse來返回乙個字串給客戶端.

這個字串只是響應體的部分,返回給客戶端的響應頭的部分應該怎麼設定呢???

為返回給客戶端的資訊加乙個響應頭:

這時響應體中,包含了cookie的內容

Django 框架 Django介紹

django 使用 python 語言寫的開源 web 開發框架,並遵循 mvc 設計。勞倫斯出版集團為了開發以新聞內容為主的 而開發出來了這個框架。django 今年來應用越來越廣泛。django 的主要目的是簡便 快速的開發資料庫驅動的 它強調 復用,多個元件可以很方便的以 外掛程式 形式服務於...

Django框架 Django請求處理流程

django對請求的處理流程 使用者通過瀏覽器傳送請求 請求到達request中介軟體,中介軟體對request請求做預處理或者直接返回response 若未返回response,會到達urlconf路由,找到對應檢視函式 檢視函式做相應預處理或直接返回response view中的方法可以選擇性的...

Django框架學習 初識Django專案

django admin 檢查是否安裝好django環境 django admin startproject name 建立乙個名為name的django專案 python manage.py check 檢查專案的完整性 python manage.py runserver 本地執行django專...