要想自己改Django,先得了解框架,学会mini-web框架,学mini-web框架,需要遵守WSGI协议
要实现mini-web的流程1
在sublime里Ctrl+h:全局替换
保证两边都close掉了,内存都被释放掉,不然用户一多就爆掉了
进程之间都是独立的,才需要;多线程是共享的,不需要;携程也不需要
一、面向对象的服务器
二、支持动态解析
返回数据时不是直接返回——>需要组拼请求头和请求体再返回
请求头里有User-Agent:(主要识别客户所用的操作系统浏览器的版本)
1)User-Agent:爬虫时一定要有
2)User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是用户浏览器,就会应答
以上遵循HTTP协议
三、服务器的框架解耦-支持框架的服务器
四、WGSI协议
如何可以不修改服务器和架构代码而确保可以在多个架构下运行web服务器呢?——WSGI
WSGI协议规定:
1.服务器调用框架时,必须告诉浏览器请求的是啥
2. 框架在返回数据时规定怎么给
要想遵循协议,首先框架里必须要有一个可以直接调的函数,传来的参数正常有两个——一个是字典,另一个是函数(函数的引用)
浏览器请求动态页面过程
五、支持WGSI协议的服务器-字典传参
body = mini_frame027.application(env, self.set_response_header) # 第69行黄色框
括号里的两个参数分别是字典和函数
函数(, ,头信息是一个列表)# 第86行红色框
头信息传过来是列表,列表里的每一个元素是元组,元组里键值对,:前是键,:后是值
environ:一个包含所有HTTP请求信息的dict对象;
start_response:一个发送HTTP响应的函数