请求生命周期:

客户端——>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方法

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

  1. Django组件 - Django请求生命周期、中间件

    一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...

  2. Django组件---Django请求生命周期和中间件

    Django组件---Django请求生命周期和中间件 Django请求生命周期 说明: client代表浏览器,浏览器的内部为我们封装了socket,Django的WSGI模块也为我们封装了sock ...

  3. Django 框架 django的请求生命周期

    概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串,同时http请求是无状态的,可以通过session和cookie来辅助. 浏览器通过ip和端口及路由方式访问服务端. 在Djang ...

  4. Django的请求生命周期

    Django的请求生命周期 请求生命周期 请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情. 1.客户端发送Http请求 2 .服务器接收,根据请求 ...

  5. DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

    DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

  6. Django框架请求生命周期

    先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校 ...

  7. 【转】Django框架请求生命周期

    https://www.cnblogs.com/gaoya666/p/9100626.html 先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行 ...

  8. Django之请求生命周期

    settings.py中间件执行 自定义中间件的配置: (1)任意新建一个py文件,导入模块from django.utils.deprecation import MiddlewareMixin ( ...

  9. Django Http请求生命周期

    day54 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中的的url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 4.业务处理 URL----&g ...

随机推荐

  1. eclipse、MyEclipse 修改字符集和JDK

    eclipse 中UTF-8设置 1.windows->Preferences   打开"首选项"对话框: 2.然后,general->Workspace,右 侧Tex ...

  2. error_reporting函数引起的error_log配置失效的问题

    由于项目代码中大量使用了error_reporting(0);导致php.ini中的error_log失效,不记录错误日志, 导致调试起来非常不便,耗费大量的时间,所以在php.ini的配置中禁止掉e ...

  3. linux双机热备份

    使用HeartBeat实现高可用HA的配置过程详解 一.写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A 提供 ...

  4. MySQL问题:Access denied for user 'mysql'@'localhost'

    deep@deep-PC:~$ sudo mysql -uroot -p mysql> update mysql.user set authentication_string=PASSWORD( ...

  5. 如何在ubuntu下重建被grub覆盖的win10引导区?

    如何在ubuntu下重建被grub覆盖的win10引导区? 1.修改grub配置文件: sudo vi /etc/default/grub 2.设置:GRUB_DEFAULT = 2 3.更新配置文件 ...

  6. 【DSP开发】CCS数据格式 load

    CCS支持的.dat文件详解(转载于hellodsp) CCS支持的.dat文件的格式为: 定数 数据格式 起始地址 页类型 数据块大小 1651 其后是文件内容,每行表示一个数据. 定数固定为&qu ...

  7. 删除Vue中无权限的【node_modules】文件

    npm install rimraf -g rimraf node_modules

  8. javaGuide_类文件结构

    一 概述 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机.Java 语言通过字节码的方式,在一定程度上解决了传统解释型 ...

  9. win10配置Keras及GPU环境

    今天搭建了Keras深度学习的环境 详细记录一下 安装Anaconda3 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. Anac ...

  10. [LuoguP2157][SDOI2009]学校食堂_状压dp

    学校食堂 题目链接:https://www.luogu.org/problem/P2157 数据范围:略. 题解: 发现$B$特别小,很容易想到状压. 即在$dp$的时候弄出来$f_{(i,j,k)} ...