web框架的本質 python

2022-06-29 06:54:17 字數 1670 閱讀 3975

import

socket

#建立乙個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協議的資料

print

(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...