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'))
以上程式碼主要實現如下過程:
- 建立socket服務,繫結IP和埠並啟動監聽程序,這樣就把本地計算機設定成socket服務端。
- 服務啟動後通過迴圈語句持續接受瀏覽器傳送的資訊。
- socket服務端與瀏覽器以位元組形式在網路上傳遞資訊,在傳送字串前必須將其轉換成位元組形式。
- 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檔案當作模板,對其中的特殊符號標識的字串進行替換併發給瀏覽器顯示。