进一步理解Django中的middleware

首先,Django文档中是这样描述的:Middleware is a framework of hooks into Django’s request/response processing. It’s a light, low-level “plugin” system for globally altering Django’s input or output.前端

也就是说中间件是一个钩子框架能够理解为过滤器,能够过滤发送到Django视图层的请求,也能够过滤视图层发送给前端的响应.它是一个轻量级的底层插件系统,用途在全局修改Django的输入或者输出。浏览器

咱们在进行视图编写的时候会频繁用到request.user,这个user属性是怎么来的呢?服务器

其实在Django默认提供的中间件AuthenticationMiddlewar,这个中间件在每一个view视图函数执行以前,把user设置为request的属性
框架

 

Django 在中间件中预置了六个方法,这六个方法的区别在于不一样的阶段执行,对输入或输出进行干
预,方法以下:函数

1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于肯定是否启用当前中间件。spa

def __init__():
   pass插件

2.处理请求前:在每一个请求上调用,返回 None 或 HttpResponse 对象。
def process_request(request):
  passcode

3.处理视图前:在每一个请求上调用,返回 None 或 HttpResponse 对象。
def process_view(request, view_func, view_args, view_kwargs):
  pass中间件

4.处理模板响应前:在每一个请求上调用,返回实现了 render 方法的响应对象。对象

def process_template_response(request, response):
  pass

5.处理响应后:全部响应返回浏览器以前被调用,在每一个请求上调用,返回 HttpResponse 对象。
def process_response(request, response):
  pass

6.异常处理:当视图抛出异常时调用,在每一个请求上调用,返回一个 HttpResponse 对象。
def process_exception(request,exception):
  pass

 

并且

中间件的执行顺序很是重要

在请求视图被处理,中间件由上至下依次执行。

在请求视图被处理,中间件由下至上依次执行。

相关文章
相关标签/搜索