面向?qū)ο蟆?dòng)態(tài)解析、支持框架、wsgi協(xié)議、支持協(xié)議

要想自己改Django,先得了解框架,學(xué)會(huì)mini-web框架,學(xué)mini-web框架,需要遵守WSGI協(xié)議

要實(shí)現(xiàn)mini-web的流程1

在sublime里Ctrl+h:全局替換

保證兩邊都close掉了,內(nèi)存都被釋放掉,不然用戶一多就爆掉了

進(jìn)程之間都是獨(dú)立的,才需要;多線程是共享的,不需要;攜程也不需要

一、面向?qū)ο蟮姆?wù)器

二、支持動(dòng)態(tài)解析

返回?cái)?shù)據(jù)時(shí)不是直接返回——>需要組拼請(qǐng)求頭和請(qǐng)求體再返回

請(qǐng)求頭里有User-Agent:(主要識(shí)別客戶所用的操作系統(tǒng)瀏覽器的版本)

1)User-Agent:爬蟲時(shí)一定要有

? ? ? ? ? ? 2)User-Agent會(huì)告訴網(wǎng)站服務(wù)器,訪問者是通過什么工具來請(qǐng)求的,如果是用戶瀏覽器,就會(huì)應(yīng)答

以上遵循HTTP協(xié)議

三、服務(wù)器的框架解耦-支持框架的服務(wù)器

四、WGSI協(xié)議

如何可以不修改服務(wù)器和架構(gòu)代碼而確保可以在多個(gè)架構(gòu)下運(yùn)行web服務(wù)器呢?——WSGI

WSGI協(xié)議規(guī)定:

1.服務(wù)器調(diào)用框架時(shí),必須告訴瀏覽器請(qǐng)求的是啥

2.? ?框架在返回?cái)?shù)據(jù)時(shí)規(guī)定怎么給

要想遵循協(xié)議,首先框架里必須要有一個(gè)可以直接調(diào)的函數(shù),傳來的參數(shù)正常有兩個(gè)——一個(gè)是字典,另一個(gè)是函數(shù)(函數(shù)的引用)

????????????????????????瀏覽器請(qǐng)求動(dòng)態(tài)頁面過程

五、支持WGSI協(xié)議的服務(wù)器-字典傳參

body = mini_frame027.application(env, self.set_response_header) # 第69行黃色框

括號(hào)里的兩個(gè)參數(shù)分別是字典和函數(shù)

函數(shù)(, ,頭信息是一個(gè)列表)# 第86行紅色框

頭信息傳過來是列表,列表里的每一個(gè)元素是元組,元組里鍵值對(duì),:前是鍵,:后是值

environ:一個(gè)包含所有HTTP請(qǐng)求信息的dict對(duì)象;

start_response:一個(gè)發(fā)送HTTP響應(yīng)的函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容