importsocket
#建立乙個socket連線
sk =socket.socket()
#繫結ip和埠
sk.bind(('
127.0.0.1
',8888))
#設定監聽數量
sk.listen(5)
while
true:
#獲取資料
conn,addr =sk.accept()
#設定資料最大接受值
data = conn.recv(8096)
#遵循http協議的資料
(data)
#返回響應資料
conn.send(b"
111"
)
#關閉連線
conn.close()
1.web框架的本質其實就是乙個socket鏈結,我們在成熟框架中看到wsgiref之類的wsgi其實都是基於socket發展而來的
2.web框架其實就是在socket客戶端的基礎上新增了包括路由匹配、模板渲染、資料庫互動等多個方面。
3.以上最簡單的web框架中print(data)的結果是一串包括了\r\n\r\n分割的請求頭和請求體,其中請求頭又以\r\n分割成的每一行key value的資料,而只有請求頭的第一行不是\r\n分割而是通過空格分割的,通過這樣不斷的分割我們就可以得到我們想要的資訊,包括資料格式,url等,現有的web框架包括django、flask都會把這些資訊封裝在request物件中,這樣就可以方面我們獲取其中的值,
4.在知道以上內容的前提下,我們可以自定義一些路由規則如下,同時其中的元組第二項就是我們的函式名,所以我們還要定義函式
url_list =[('/login
',login),('
/index
',index),
]def
login():
return
'login
'def
index():
return
'index
'
5.這樣我們就可以根據url來返回不同的頁面,同時,如果我們在頁面返回的字串中返回乙個html形式的字串,這樣瀏覽器也能夠渲染出相應的格式,如果我們想渲染乙個html檔案,也可以用過open方法將檔案內容讀取出來拼接成字串返回即可
url_list =[('/login
',login),('
/index
',index),('
/regitser
',regitser),
]def
login():
return
'login
'def
index():
return
'index
'def
regitser():
return
'register
'
6.通過以上的步驟我們就可以完成乙個基於socket自己封裝的web框架了,但是這樣的框架可以渲染的**是乙個靜態**,如果我們想讓頁面變成個動態**,我們可以通過sqlalchemy或者pymysql通過資料庫獲取是資料,然後通過迴圈和格式化字串的方式將資料動態的放在返回值中。
Web應用的本質
了解了http協議和html文件,我們其實就明白了乙個web應用的本質就是 瀏覽器傳送乙個http請求 伺服器收到請求,生成乙個html文件 伺服器把html文件作為http響應的body傳送給瀏覽器 瀏覽器收到http響應,從http body取出html文件並顯示。所以,最簡單的web應用就是先...
python的web開發框架django學習筆記
1.建立專案 1 開啟命令列,進入想要安置專案的目錄,命令列輸入 django admin.py startproject myblog myblog是你建立專案的專案名稱。注意 如果現示不是內部或者外部命令,這需要想配置環境變數如下 d python27 d python27 lib site p...
Python的web框架Django基礎學習(1
1.首先pip安裝一下 pip install django 1.11.72.可通過pycharm來建立乙個django工程 setting.py中可以小設定一下,例如訪問的ip,語言,時間格式 ip allowed hosts 語言language code zh hans 時區time zone...