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-自己的

 

 

posted @ 2019-01-11 20:34  ChuckXue  阅读(367)  评论(0)    收藏  举报