Django基礎——Web框架原理


所有的web應用的本質就是一個socket服務端,而瀏覽器就是一個socket客戶端;

以前我們自己在電腦上寫的socket服務端和客戶端的通信,我們知道客戶端會向服務端發來什么格式的消息,然后我們用服務端去用相應的格式給接收它,其實兩者之間,是靠自己定的一個通信的協議。

而現在客戶端是用戶的瀏覽器了,因此還想使瀏覽器的客戶端與服務端進行通信,就必須要遵循HTTP協議了(本質上就是接收消息的格式要求)HTTP協議中現今廣泛使用的一個版本——HTTP 1.1。

有關於HTTP協議:

  1.瀏覽器往服務端發的叫做 請求(request);

  請求消息的格式:

 

  請求方法 路徑 HTTP/1.1\r\n
  k1:v1\r\n
  k2:v2\r\n
  \r\n
  請求數據

HTTP請求方法通常有兩種;一是GET請求;二是PSOT請求;

  GET請求:通常是請求服務端返回一個頁面(讀取數據);

  PSOT請求:通常是表單提交數據

2.服務端往瀏覽器發的叫 響應(response);

  響應的格式:

 

  HTTP/1.1 狀態碼 狀態描述符\r\n
  k1:v1\r\n
  k2:v2\r\n
  \r\n
  響應正文 <-- html的內容

 

HTTP的狀態碼

狀態代碼的第一個數字代表當前響應的類型:

  • 1xx消息——請求已被服務器接收,繼續處理
  • 2xx成功——請求已成功被服務器接收、理解、並接受
  • 3xx重定向——需要后續操作才能完成這一請求
  • 4xx請求錯誤——請求含有詞法錯誤或者無法被執行
  • 5xx服務器錯誤——服務器在處理某個正確請求時發生錯誤

  例如"200 OK","404 Not Found"


動態的網頁:
  本質上都是字符串的替換
字符串替換發生在什么地方:
  在服務端替換完再返回給瀏覽器!!!

 

一個完整得請求流程:

  1.首先啟動服務端,等待客戶端(用戶的瀏覽器)來連接;

  2.在瀏覽器的地址欄鍵輸入URL,按下回車鍵后就與服務端建立了連接,瀏覽器就向服務端發送了請求;

  3.服務端接收到請求消息后,按照HTTP協議來解析消息;根據路徑和函數的對應關系,找到將要執行的函數;

  4.執行函數,打開HTML文件,進行字符串的替換,得到一個最終要返回的HTML的內容;

  5.按照HTTP協議的消息格式要求,把HTML內容回復給用戶的瀏覽器(這一動作就是發送響應);

  6.瀏覽器收到響應的消息之后,就會按照HTML的規則來渲染頁面,把最終的頁面呈現個用戶的瀏覽器上;

    

總結:  

1. web框架的本質:
  socket服務端 與 瀏覽器的通信
2. socket服務端功能划分:
  a. 負責與瀏覽器收發消息(socket通信) --> wsgiref/uWsgi/gunicorn...
  b. 根據用戶訪問不同的路徑執行不同的函數
  c. 從HTML讀取出內容,並且完成字符串的替換 --> jinja2(模板語言)

3. Python中 Web框架的分類:
1. 按上面三個功能划分:
  1. 框架自帶a,b,c --> Tornado
  2. 框架自帶b和c,使用第三方的a --> Django
  3. 框架自帶b,使用第三方的a和c --> Flask
2. 按另一個維度來划分:
  1. Django --> 大而全(你做一個網站能用到的它都有)
  2. 其他 --> Flask 輕量級


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM