web框架

Web框架本質

  對於全部的Web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。html

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3   
 4 import socket
 5   
 6 def handle_request(client):
 7     buf = client.recv(1024)                       #獲取客戶端發過來的數據
 8     client.send("HTTP/1.1 200 OK\r\n\r\n")
 9     client.send("Hello, Seven")
10   
11 def main():
12     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)       #建立一個socket服務端對象
13     sock.bind(('localhost',8000))                    #監聽8000端口
14     sock.listen(5)                             #最多5個鏈接
15   
16     while True:                                                     #一直在等待鏈接
17         connection, address = sock.accept()               #若是有鏈接,就會獲取到值
18         handle_request(connection)                    #獲取到值以後調用handle_request處理
19         connection.close()                         #處理完成這個請求後斷開此次鏈接
20   
21 if __name__ == '__main__':
22     main()

全部web框架的本質就是這20幾行代碼

 python標準庫提供的獨立WSGI服務器稱爲wsgiref。python

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3  
 4 from wsgiref.simple_server import make_server
 5  
 6 def RunServer(environ, start_response):
    #environ 客戶端發來的全部數據
    #start_response 封裝要返回給用戶的數據(響應頭、狀態之類的)
7 start_response('200 OK', [('Content-Type', 'text/html')])
    
8 return '<h1>Hello, web!</h1>'
    #返回的內容
    python3中:
    #
return ['<h1>Hello, web!</h1>'.encode('utf-8')](返回的是列表形式)
10 if __name__ == '__main__':
11     httpd = make_server('', 8000, RunServer)
12     print "Serving HTTP on port 8000..."
13     httpd.serve_forever()
#查看請求,經過pycharm斷點

自定義Web框架

web框架定義好後,全部用戶來訪問都是返回的同一個內容,經過請求中的內容(url)區分,返回不一樣的內容web

 MVC數據庫

   Model  view    Controller瀏覽器

   數據庫  模板文件  業務處理服務器

 MTV框架

      Model  Template   Controllersocket

   數據庫  模板文件  業務處理url

區別就是文件夾名字的區別,處理過程是同樣的spa

相關文章
相關標籤/搜索