1 web项目工作流程
1.1 了解web程序工作流程
1.2 django生命周期
HTTP uwsgi uwsgi WSGI
浏览器 ------> Nginx ------> uWSGI ------> PythonWSGImodule ------> Python application
(web服务器)(web服务器)(web服务器) (python专用web协议) web应用
1.Django不识别http请求 此时就用到了uwsgi ,uwsgi把http请求转化为wsgi请求,wsgi请求处理完通过uwsgi转换成http请求
2.wsgi是一种通信协议、wsgi应用可以在任何服务器上运行
2 django介绍
- web框架的本质就是接受客户端请求,根据请求查询数据库,把需要的数据返还给客户端
2.1 Django的优势
快速开发,MVT,功能齐全(大而全的框架)
2.2 Django VS flask
1)开发数据驱动web网站(复杂业务逻辑)数据量大的时候,django性能不太好
2)数据分析后的结果展示界面:flask(数据分析)轻小巧灵活
3)快速成型应用上线:Django(接口)特别大特别全
3 django设计模式
3.1 MVC
M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
V全拼为View,用于封装结果,生成页面展示的html内容。
C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。
3.2 MVT
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html( 或者是json数据 )。
3.2Http请求方式
1).Http/1.1写一张共定义了八种方法来表明Request-URL指定的资源不同的操作方式
2).Http1.0定义了三种请求方法: GET,POST,和HEAD方法
3).Http1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法
八种请求方式
1.GET 请求指定信息并返回实体主体
2.HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用来获取报头
3.POST 向指定资源提交数据进行处理请求。数据被包含在请求体中,post请求可能会导致新的资源/已有资源篡改
4.PUT 发送指定数据取代指定文档内容
5.DELETE 删除指定内容/页面
6.CONNECT HTTP/1.1协议中预留能够连接改为管道方式的代理服务器
7.OPTIONS 允许客户端查看服务器的性能
8.TRACE 回显服务器收到的请求,主要用于测试或诊断
1.1xx 信息 接收成功 继续处理
2.2xx 成功 操作成功的收到,理解和接受
3.3xx 重定向 为了完成请求,必须采取进一步措施
4.4xx 客户端错误 请求的语法有错误 或不能完全被接受
5.5xx 服务器错误 服务器不能完成有效的请求
HTTP请求区别
1.请求行→→请求头→→请求体
2.delete、get是没有请求体的,其通过路由方式传参
3.post、put 拥有请求体 相对于其他请求post和put 更安全一些
4.区别是 方式不一样(delete,get通过路由传参) (post,put通过请求体传参数),方法不一样
三次握手和四次挥手的理解
握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始“三次握手”:
(1)首先客户端向服务器端发送一段TCP报文,其中:
标记位为SYN,表示“请求建立新连接”;
序号为Seq=X(X一般为1);
随后客户端进入SYN-SENT阶段。
(2)服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文,其中:
标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了你的数据);
序号为Seq=y;
确认号为Ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号Ack的值;随后服务器端进入SYN-RCVD阶段。
(3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。其中:
标志位为ACK,表示“确认收到服务器端同意连接的信号”(即告诉服务器,我知道你收到我发的数据了);
序号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序号值;
确认号为Ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号Ack的值;
随后客户端进入ESTABLISHED阶段。
服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。
在客户端与服务器端传输的TCP报文中,双方的确认号Ack和序号Seq的值,都是在彼此Ack和Seq值的基础上进行计算的,这样做保证了TCP报文传输的连贯性。一旦出现某一方发出的TCP报文丢失,便无法继续"握手",以此确保了"三次握手"的顺利完成。
此后客户端和服务器端进行正常的数据传输。这就是“三次握手”的过程。