1. 程式人生 > 其它 >Django-web開發框架

Django-web開發框架

Web開發框架

​ Web開發框架是用於Web開發的成套軟體架構。Web服務本質上是由socket(一種通訊機制,通過繫結IP地址和埠產生一個)通訊鏈,實現計算機間的通訊)服務端向socket客戶端提供HTTP響應,而瀏覽器就是一個socket客戶端,它向Web發出請求。Django本身就是一個Web開發框架,它連線socket兩端進行資料交換,這種交換按照指定的協議進行,即HTTP協議。

Web應用本質

​ 網路中不同計算機間進行通訊必須經過IP地址和埠。為了降低網路通訊開發的複雜度,人們在TCP/IP 4層結構中的應用層與傳輸層之間加了一層socket層。它把複雜的TCP/IP進行了封裝,並提供了一組服務的介面。

​ 網路中伺服器主機會提供一種或多種服務,每一種服務開啟一個socket並繫結到一個埠上,也就是說不同的埠對應於不同的服務(如Web服務一般用到80埠),客戶端向那個埠傳送請求就會得到相應的響應。

​ Web伺服器本質上是一個socket服務端,瀏覽器本質上是一個socket客戶端。以下用程式碼簡單說明web開發框架的執行方式:

# 匯入socket模組
import socket
# 建立socket服務
sk = socket.socket()
# 繫結IP與埠號,這是繫結本機埠
sk.bind(('127.0.0.1', 8000))
# 進行監聽
sk.listen()
print('socket服務開始執行......')
while True:
    # 接收socket客戶端連線
    conn, addr = sk.accept()
    # 接收socket客戶端資料
    data = conn.recv(1024)
    print(data)
    # 向客戶端傳送訊息,字串前加字母b表示以位元組形式傳遞
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
    # 向客戶端傳送訊息,bytes()函式把字串轉換為位元組形式
    conn.send(bytes("我是socket服務端,我已收到你的請求。", encoding='utf-8'))

以上程式碼主要實現如下過程:

  1. 建立socket服務,繫結IP和埠並啟動監聽程序,這樣就把本地計算機設定成socket服務端。
  2. 服務啟動後通過迴圈語句持續接受瀏覽器傳送的資訊。
  3. socket服務端與瀏覽器以位元組形式在網路上傳遞資訊,在傳送字串前必須將其轉換成位元組形式。
  4. socket服務端與瀏覽器的資訊傳遞必須按照HTTP格式,conn.send(b"HTTP/1.1 200 OK\r\n\r\n")這句程式碼把字串按照HTTP格式向瀏覽器傳遞,主要格式為HTTP/1.1 200 OK,字串後面跟兩對回車符和換行符,這樣其後的字串就能顯示在瀏覽器中。

在瀏覽器輸入地址即可收到響應。

HTTP簡單介紹

是瀏覽器(客戶端)與Web伺服器交流的語言,HTTP訊息格式有請求和響應兩種,請求和響應都包含Header和Body兩部分,其中Body是可選的。

HTTP請求(Request)訊息包含請求頭(Header)和請求體(Body)。請求頭每行以"\r\n"結尾,請求頭第一行以空格分隔的字串分別代表請求方法、路徑、HTTP等資訊。第二個字串就是路徑,是一個較為重要的字串,由此可推知瀏覽器位址列中的URL。請求體從第二行開始都是"頭欄位名:值\r\n"的形式。請求頭和請求體之間以\r\n分隔,請求體可有可無。

HTTP響應(Response)訊息包含響應頭(Header)和響應正文(Body)。響應頭每行以"\r\n"結尾,響應頭第一行包含代表HTTP、狀態碼、狀態描述等資訊的3個字串,這3個字串以空格作為分隔符。響應頭從第二行開始都是"頭欄位名:值\r\n"的形式。響應頭和響應體之間以\r\n分隔,響應正文就是顯示在瀏覽器的HTML格式的內容。

python web開發框架

web開發框架的本質就是用HTTP實現socket服務端與瀏覽器的通訊功能。主要有3步:

  • socket服務端與客戶端收發socket訊息,按照HTTP來解析訊息。
  • 建立URL與要執行的函式的對應關係,這裡的函式包含業務邏輯程式碼。
  • 載入HTML檔案當作模板,對其中的特殊符號標識的字串進行替換併發給瀏覽器顯示。