Web框架本質及Django例項
阿新 • • 發佈:2018-12-27
Web框架本質
我們可以這樣過理解:所有的Web應用本質上就是一個socket服務端,而使用者的瀏覽器就是一個socket客戶端。這樣我們就可以自己實現Web框架了。
半成品自定義web框架
import socket ks = socket.socket() ks.bind(('127.0.0.1',8080)) ks.listen() while True: conn,addr = ks.accept() data = conn.recv(1024) conn.send(b'OK') conn.close()
可以說Web服務本質上都是在這十幾行程式碼的基礎上擴展出來的。
使用者給瀏覽器輸入網址,會給服務端傳送資料,那瀏覽器會發送什麼資料?怎麼發?這個誰來定?你的這個網站是這個規定,他那個網站按照他的那個規定,這樣網際網路就沒法玩了?
所以,必須有一個統一規定,讓大家傳送訊息、接收訊息的時候有個格式依據,不能隨便寫。
這個規則就是HTTP協議,以後瀏覽器傳送請求資訊也好,伺服器回覆響應也罷,都要按照這個規則來。
HTTP協議主要規定了客戶端和伺服器之間的通訊格式,那HTTP協議是怎麼規定訊息格式的呢?
讓我們首先列印下我們在服務端接收到的訊息是什麼。
import socket ks = socket.socket() ks.bind(('127.0.0.1',8080)) ks.listen() while True: conn,addr = ks.accept() data = conn.recv(1024) #將瀏覽器發來的訊息打印出來 print(data) #jiang conn.send(b'OK') conn.close()
輸出:
b'GET / HTTP/1.1\r\nHost: 127.0.0.1:8080\r\nConnection: keep- alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, image/apng,*/*;q=0.8\r\nDNT: 1\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: csrftoken=RKBXh1d3M97iz03Rpbojx1bR6mhHudhyX5PszUxxG3bOEwh1lxFpGOgWN9WN93ZH3zv\r\n\r\n'