Django之web应用/服务,HTTP协议
一:web应用
web服务器(本质是socket)都实现了wsgi协议;
wsgi:web服务网关接口,是一个协议
cs和bs架构的软件:s包括两部分,web服务器+application;
目前阶段django项目用的web服务器是:wsgiref+application,不支持并发;上线后会用uwsgj+application:支持并发;
基于socket的服务端:
import socket soc = socket.socket() soc.bind(('127.0.0.1',8080)) soc.listen(5) while True: conn,addr = soc.accept() data = conn.recv(1024) print(data) print('连接成功') conn.send(b'HTTP/1.1 200 OK\r\n\r\n<h1>hello web</h1><img src="https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=5e3814acf9edab64607f4592965fc4a6/14ce36d3d539b600c0c465d0eb50352ac65cb74b.jpg"></img>')
请求格式:
请求首行
b'GET /?name%20=%20egon HTTP/1.1\r\n
请求头:key,value格式
Host: 127.0.0.1:8080\r\nConnection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n
Cookie: csrftoken=bty9mvzU00upRFqNOCrterbV6x2bgCe2Ckh37caov8NLubP9NIfz2CiXMrjyfrtR; sessionid=lvdn0us2dlnpcoie0r0yyio243j1w7b2\r\n\r\n' 请求体
......
二:HTTP协议
http协议的特点:
无状态:
无连接:
一次请求一次响应:对于大文件的传输,可以分多次来发送,避免一次在内存中加载过多内容。多次发送依然属于一次请求或响应。
三:web框架
三大框架
a:socket
b:路由跟视图函数匹配关系
c:模板渲染
django: a-别人的wsgiref b-自己的 c-自己的
flask: a-别人的 b-自己的 c-别人的jinja2
tornado: a-自己的 b-自己的 c-自己的

浙公网安备 33010602011771号