后端——>Django框架——>用Python寫的要想自己改Django灸眼,先得了解框架,學會mini-web框架酌呆,學mini-web框架融柬,需要遵守WSGI協(xié)議要實現(xiàn)mini-web的流程
在sublime里Ctrl+h:全局替換
保證兩邊都close掉了,內(nèi)存都被釋放掉务甥,不然用戶一多就爆掉了進程之間都是獨立的牡辽,才需要喳篇;多線程是共享的敞临,不需要;攜程也不需要一麸澜、面向?qū)ο蟮姆掌?br>
二挺尿、支持動態(tài)解析返回數(shù)據(jù)時不是直接返回——>需要組拼請求頭和請求體再返回請求頭里有User-Agent:(主要識別客戶所用的操作系統(tǒng)瀏覽器的版本)
? ? ? 1)User-Agent:爬蟲時一定要有
? ? ? 2)User-Agent會告訴網(wǎng)站服務器,訪問者是通過什么工具來請求的炊邦,如果是用戶瀏覽器编矾,就會應答
以上遵循HTTP協(xié)議
三、服務器的框架解耦-支持框架的服務器
四馁害、WGSI協(xié)議如何可以不修改服務器和架構(gòu)代碼而確闭危可以在多個架構(gòu)下運行web服務器呢?——WSGI
WSGI協(xié)議規(guī)定:
1.? 服務器調(diào)用框架時碘菜,必須告訴瀏覽器請求的是啥
2.? 框架在返回數(shù)據(jù)時規(guī)定怎么給
要想遵循協(xié)議凹蜈,首先框架里必須要有一個可以直接調(diào)的函數(shù)限寞,傳來的參數(shù)正常有兩個——一個是字典,另一個是函數(shù)(函數(shù)的引用)瀏覽器請求動態(tài)頁面過程
五仰坦、支持WGSI協(xié)議的服務器-字典傳參
body = mini_frame027.application(env, self.set_response_header) # 第69行黃色框
括號里的兩個參數(shù)分別是字典和函數(shù)
函數(shù)(履植, ,頭信息是一個列表)# 第86行紅色框
頭信息傳過來是列表悄晃,列表里的每一個元素是元組玫霎,元組里鍵值對,:前是鍵妈橄,:后是值
environ:一個包含所有HTTP請求信息的dict對象庶近;
start_response:一個發(fā)送HTTP響應的函數(shù)。
六眷细、給程序傳參數(shù)以字符串形式傳參:傳任何數(shù)據(jù)都以字符串形式對待端口被占用拦盹,程序運行不了解決方案:換端口
去web服務器導入,main方法運行程序
端口正確
實例化時把接收的端口port傳進去
init接收端口溪椎,綁定不能寫死普舆,改為port
http服務器做成通用的好處:可以隨意調(diào)用哪個模塊下的哪個函數(shù)
? ? ? ? ? ? ? ?
作者:Agony_銳
鏈接:http://www.reibang.com/p/f799359df1c4
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處校读。