1. 程式人生 > >django-1

django-1

內容 服務 過程 文檔 ssi buck 快速構建 127.0.0.1 adl

一、什麽是web框架

框架,即framework,特指為解決一個開放性問題而設計的具有一定約束性的支撐結構,使用框架可以幫你快速開發特定的系統,簡單的說就是你用別人搭建好的舞臺來做表演。

web應用的流程:

#瀏覽器發送一個請求

#服務器收到請求,生成一個HTML文檔

#服務器把HTML文檔作為HTTP響應的Body發送給瀏覽器

#瀏覽器收到HTTP響應,從HTTP Body取出HTML文檔並顯示

二、自行開發一個Web Server框架

對於所有的web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。

 1 # -*- coding:utf-8 -*-
2 # created by xuan 3 4 import socket 5 6 7 def main(): 8 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 9 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 10 sock.bind((localhost, 8000)) 11 sock.listen(5) 12 13 while True: 14 # 等待瀏覽器訪問 15
conn, addr = sock.accept() 16 # 接收瀏覽器發送來的請求內容 17 data = conn.recv(1024) 18 print(data) 19 20 # 給瀏覽器返回內容 21 conn.send(b"HTTP/1.1 200 OK\r\nContent-Type:text/html; charset=utf-8\r\n\r\n") 22 conn.send("電腦前的你長的真好看!".encode("utf-8")) 23 24 #
關閉和瀏覽器創建的socket連接 25 conn.close() 26 27 28 if __name__ == "__main__": 29 main()

為什麽學Django?

Good question , 知Python者必知Django, 因為這可是Python語言裏最流行&強大的Web框架,同時亦是全球第5大WEB框架,可快速構建穩定強大的WEB項目,大大提高開發效率,很多知名項目都是基於Django開發,如Disqus、Pinterest、Instagram、Bitbucket等, Django官方Slogan是The framework for perfectionist with deadline! 一個為完美主義者且又開發工期很緊的人設計的框架,事實確實如此,Django自身集成了豐富的WEB開發通用組件,如用戶認證、分頁、中間件、緩存、session等,可以避免浪費大量時間重復造輪子。

Django來了

創建一個django項目

創建APP

一個項目中會包含一個或多個子項目,每個項目實現不同的功能和服務,如微信裏包含基本通信功能,還有支付、小程序等,每塊業務都可以分為一個子項目。在django中, 我們管這個子項目叫app。下面是一個有多app的項目

為了開發和維護方便,每個子項目(app)都會有一個獨立文件夾來存放各自的業務代碼。
一般程序簡單情況下,只需要創建一個app即可。

技術分享圖片

HTTP請求本質

上面的一次django請求都經歷了哪些過程呢?我們來剖析下

瀏覽器訪問網站的本質:socket客戶端、socket服務端之間的收發消息。

流程:

1. 【服務端】網站啟動,並監聽IP和端口,如:127.0.0.1:80,等待客戶端來連接…?
2. 【客戶端】瀏覽器中輸入http://www.oldboyedu.com/index/,瀏覽器先後進行:

  1.   連接:域名解析得到網站IP,並根據端口進行連接。
  2.   發送消息:將請求數據發送給服務端,發送數據本質上是字符串

3. 【服務端】接收用戶請求發來的數據,並根據請求字符串解析,並做出響應。  

4. 【客戶端】接收服務端響應的內容,將響應體展示在瀏覽器上,響應頭偷偷保存到瀏覽器。

5. 【客戶端】【服務端】連接斷開,Http請求終止(體現了Http短連接)。  

django-1