Django的请求生命周期与中间件中的5中方法

请求生命周期:

客户端——>WSGI——> 中间件——>路由匹配——>视图函数——>WSGI——>客户端

中间件:

在全局层明处理请求和响应的

form django.utils. deprecation import MiddlaraMixin

5种方法与4个要点:执行顺序,执行时间,参数,返回值

方法:
process_request

process_views

process_exception

process_response

process_template_response

process_request(self,request)

参数:request

返回值:

None:正常流程,继续执行下一个中间件的process_request(按照中间件的注册顺序);

HttpResponse对象:下面中间件的方法不再执行,直接执行当前中间件的process_response方法,然后倒叙向上执行同一个方法;

执行顺序:按中间件注册顺序,顺序执行

执行时间:WSGI之后,路由匹配之前;

process_view(self,request,func_name,callback_args,callback_kwargs)

参数:request,func_name,callback_args,callback_kwargs

返回值:

  None:正常流程

  HttpResponse对象: 下面中间件的同方法不执行,视图函数也不执行,直接执行最后一个中间件的process_response方法,倒序向上执行此方法;

执行顺序:按照中间件注册顺序,顺序执行

执行时间:视图函数之前,路由匹配之后,

process_response(self,request,response)

参数:request,

  response  返回给浏览器的响应对象

返回值:

  None:正常流程

  HttpResponse对象: 正常流程,继续执行中间件的同方法,必须返回的

执行顺序:按照中间件注册顺序,倒叙序执行

执行时间:视图函数之后,进入WSGI之前

process_exception(self,request,exception)

#处理视图层明的异常

参数:request,

  exception:视图发生的错误对象

返回值:

  None:交个下一个中间件处理,最后交个django处理

  HttpResponse对象:执行最后一个中间件的process_response方法,倒叙向上执行

执行顺序:按照中间件注册顺序,倒叙序执行

执行时间(触发条件):视图函数发生错误之后,被调用,

process_template_response(self,request,response)

  return response

参数:request,

  response:返回的响应对象

返回值:

  HttpResponse对象:必须返回,倒叙向上执行

执行顺序:按照中间件注册顺序,倒叙序执行

执行时间(触发条件):视图函数返回TemplateResponse对象或Response对象有render方法

原文地址:https://www.cnblogs.com/jayxuan/p/11371575.html

时间: 2024-10-08 03:24:36

Django的请求生命周期与中间件中的5中方法的相关文章

Django的请求生命周期

Django的请求生命周期: 1.当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 2.服务端的wsgiref模块接收用户请求并将请求进行初次封装,然后将请求交给Django的中间件 3.通过中间件之后将请求交给url,根据浏览器发送的不同url去匹配不同的视图函数 4.视图函数根据业务逻辑调用数据库获取相应的数据,然或根据模板渲染页面 5.视图函数将响应的页面依次通过中间件反馈给客户端 原文地址:https://www.cnblogs.com/Ming-Hui/p/93481

面试-Django框架请求生命周期

先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf.request.session - 路由匹配 - 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm.templates => 渲染 - 中间件,对响应的数据进行处理. - wsgi,将响应的内容发送给浏览器. 2.什么wsgi wsgi:

Django之请求生命周期及FBV/CBV模式

一.Http请求的过程1.http的请求/响应模式,先是用户通过前端页面发送一个http请求,请求内容包括三部分:请求头/空行/请求体(get方法没有请求体)例如:抓包如下:2.服务端就收到http的请求内容的字符串后,进行解析出相应的请求头(method /url/cookie等信息 )和请求体内容,并将请求体的内容转换成对应的key-value格式.3.服务端再通过url去匹配对应的URL路由(匹配规则是从上向下进行正则匹配,若匹配成功则停止不再向下匹配),匹配成功后找到views中对应的函

[译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)

使用特殊方法处理请求生命周期事件 为了在全局应用类中处理这些事件,我们会创建一个名称以 Application_ 开头,以事件名称结尾的方法,比如 Application_BeginRequest.举个例子,就像 Application_Start 和 Application_End 方法,ASP.NET 框架就会在事件触发的时候找到这些函数并触发它.下面是更新后的代码片段: 1 using System; 2 using System.Collections.Generic; 3 using

Django框架进阶7 django请求生命周期流程图, django中间件, csrf跨站请求伪造, auth认证模块

django请求生命周期流程图 djang中间件 它是django的门户 只要是全局相关的功能你都应该考虑使用django中间件来帮你完成 全局用户身份校验 全局用户访问频率校验 用户访问黑名单 用户访问白名单 # 只要以后用django开发业务 设计到全局相关的功能 你就考虑用中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Sessio

Django请求生命周期之响应内容

Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>FBV URL -> 类 ==>CBV4.业务处理 - 根据个人需求自定 - 操作数据库 - 原生SQL - Django ORM ==> 返回给用户的结果 <== - 响应内容 - 响应头 - 响应体 原文地址:https://www.cnblogs.com/ray-h/p/10241

Django请求生命周期和ORM

dajngo请求生命周期 django请求生命周期是:当用户在browser点击URL后,在django后台都发生了什么. 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 URL –>函数 --->FBV URL –>类     --->FBV 4.业务处理 根据个人需求自定 操作数据库 原生SQL Django ORM ---->返回给用户的结果<----- -响应

Django请求生命周期

1. Django请求生命周期的概念 用户在浏览器上输入url连接到看都页面的时间内, Django后台发生的事 2. Django请求生命周期的基本概述 1. 文字描述 第一步:浏览器发起请求 第二步:WSGI创建socket服务端,接收请求(Httprequest) 第三步:中间件处理请求 第四步:url路由,根据当前请求的URL找到视图函数 第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图:view视图将数据渲染到template模板:将数据返回) 第

DJANGO入门系列之(Django请求生命周期and路由层)

昨日回顾 1 orm 创建表,新增字段,修改,删除字段,不能创建数据库 -字段属性phone=models.CharField(max_length=64,null=True) -null=True 代表该列可以为空 2 数据的增删改查 -增(1):User.objects.create(address='') -增(2):实例化产生一个user对象,user对象的save方法 -删:User.objects.filter(id=1,name='lqz').first().delete() -删