Vue与Django的工作流程-三握四挥-中间件作用

Django介绍

什么是WSGI?

在用Python进行Web开发中,我们将其分为两部分,一是服务器程序,二是应用程序,前者负责把客户端请求接收、整理,后者负责具体的逻辑处理。那么对于服务器来说,就需要支持不同的框架,比如Django、Flask等,对于框架来说,也只有支持它的服务器才能被开发出的应用使用,这个时候就需要定一个标准,来使得服务器程序和应用程序都支持这个标准,这个标准就是WSGI,全称是Web Server Gateway Interface,它规定了双方各自的接口,以及提供什么功能,这样一来,二者就能配合使用了。

什么是MTV模式?

Django框架的MTV设计模式借鉴了MVC框架的思想,三部分为:Model、Template和View

Model(模型):负责业务对象与数据库的的映射(ORM)

Template(模版):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

什么是MVC模式?

MVC:模型(Model)、视图(View)和控制器(Controller)

Model:负责业务对象与数据库的映射(ORM)

View:负责与用户的交互

Controllor:接受用户的输入,调用模型和视图,做出响应

三次握手与四次挥手

建立连接之前
三次握手
第一次 客户端向服务器发送请求
第二次  服务器向客户端发送确定请求 并等待连接
第三次  客户端向服务器发送确定    开始建立连接
断开连接之前
四次挥手
第一次挥手   客户端向服务端发送断开请求
第二次挥手   服务器向客户端发送确定断开请求
第三次挥手   服务器断开
第四次挥手   客户端确定断开 断开连接

三次握手

四次挥手

从在浏览器输入一个网址到显示网站内容,这中间经历了什么?

下文中,浏览器即为客户端(Client),WEB Server即为服务器

假设我们现在输入一个百度的网址到浏览器的地址栏中:

  1. 输入域名:首先输入域名:www.baidu.com
  2. 解析域名获得IP:浏览器将域名发送到DNS(域名服务器)获得对应的WEB Server 的IP地址
  3. 建立TCP/IP连接:获得IP地址后,浏览器将会像对应的WEB Server发起**TCP(传输控制协议)**连接请求,最终联立TCP/IP连接
  4. 发送HTTP请求:建立了TCP连接后,浏览器会向WEB Server发起HTTP请求(请求一般包含:请求方法、请求头、请求正文)
  5. 处理请求:WEB Server解析收到的请求,将其发送给WEB APP进行数据处理等操作
  6. 返回HTTP响应:WEB Server根据情况返回HTTP响应(指定的URL数据或错误信息)给客户端
  7. 浏览器显示页面:浏览器收到响应后,将会解析HTML、CSS和Java Script,随后baidu页面就会显示出来了

 

HTTP请求

发送HTTP请求的过程就是构建HTTP请求报文,并通过TCP协议发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。

HTTP请求报文是由三部分组成: 请求方法, 请求报头和请求正文

请求行:

下面是一个完整的HTTP请求例子:

GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate

username=hanyang&password=1234

最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(1)请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1
(2)请求头(Request Header)
请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
(3)请求正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

常用的请求方法有: GET, POST, PUT, DELETE, OPTIONS, HEAD。

http请求常见的请求方式

GET方法、POST方法、HEAD方法、PUT方法、DELETE方法、CONNECT方法、OPTIONS方法、TRACE方法。
http十种状态码:
502 无效网关
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
500 内部服务器错误
对 HTTP 500 错误的定义已经充分证明了这是一个最常见的 HTTP 错误。
一般来说,HTTP 500 错误会在服务器的程序码出错时出现,或者 web 服务器发生内部错误时返回的信息。
例如,web 服务器过载时将无法正确处理访问请求。
404 文件未找到
大多数人都知道这个错误。
当用户试图访问 Web 服务器(通常是一个网页)上某个实际不存在的资源时,就会发生 404 错误。
404 错误可能是由无效的链接引起,也可能是 URL 拼写错误,还可能是因为虚拟主机将所请求页面移到其他地方(或删除所请求页面)。
一些网站设置了自定义页面以防止坏链接所产生的不良影响。
403 禁止访问
403 错误类似于 401 错误,不同之处在于 401 错误是未经授权,而 403 错误是禁止访问。
任何登录对 403 错误都不起作用。 尝试访问(被禁止的)网站目录时,就会发生 403 错误。
401 未经授权
访问者试图访问受限页面但未经授权时,网站返回 HTTP 401 错误。
错误登录尝试是导致这一错误的主因。
400 错误请求
Web 服务器通过返回 HTTP 400 错误告诉访问者,访问者用来访问网站的程序出错,或访问请求途中遭到破坏。
302 临时重定向
请求的资源现在临时从不同的 URI 响应请求。
由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
301 永久重定向
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。
206 部分内容
服务器已经成功处理了部分 GET 请求。
类似于迅雷这类的 HTTP 下载工具,都是使用此类响应实现断点续传,或者将一个大文档分解为多个下载段同时下载。
200 请求成功
请求已成功,请求所希望的响应头或数据体将随此响应返回。

HTTP请求报文的构成

一个HTTP请求报文可以由请求行、请求头、空行和请求体4个部分组成。

GET方式的请求报文没有请求体,只有请求行、请求头、空行组成。

POST方式的请求报文可以有请求行、请求头、空行、请求体四部分组成,注意:POST方式可以允许没有请求体,但是这种格式很少见

中间件

中间件的作用:

中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。

每个中间件组件都负责做一些特定的功能。中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。

中间件的使用。可以用来在访问网站之前,检查访问的ip地址是否频繁,如果频繁就阻止访问
中间件请求顺序:
在在请求视图被处理前,中间件由上至下依次执行
在请求视图被处理后,中间件由下至上依次执行

中间件的定义和五大方法

1).process_request: 处理请求前:在每个请求上,request对象产生之后,url匹配之前调用,返回None或HttpResponse

2).process_view:处理视图前:在每个请求上,url匹配之后,视图函数调用之前调用,返回None或HttpResponse对象。

3).process_response:处理响应后:视图函数调用之后,所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象。

4).process_exception:异常处理:当视图抛出异常时调用,在每个请求上调用。

5).process_template_response:函数是在视图函数执行完后立即执行的,返回一个HttpResponse对象。

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_46237597/article/details/111212628