中间件是介于request与response处理之间的一一道处理过程,相对比较轻量级,而且在全局上改变django的输入与输出,由于改变的是全局,因此须要谨慎实用,用很差会影响到性能。django
Django的中间件的定义: session
Middleware is a framework of kooks into Django's request/response processing. <br>It's a light, low-level "plugin" system for globally altering Django's input or output.
若是你想修改请求,例如被传送到view中的HttpRequest对象,或者你想修改view返回的HttpResponse对象,这些均可以经过中间件来实现。函数
可能你还想在view执行以前作一些操做,这种状况就能够用middleware来实现。你们可能频繁在view使用request.user吧。Django想在每一个view执行以前把user设置为request的属性,因而就用了一个中间件来实现这个目标,因此Django提供了能够修改request对象的中间件AuthenticationMiddleware.性能
Django默认的Middleware:spa
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
每一中间件都有具体的功能code
中间件中一共有四个方法:csrf
process_request
process_view
process_exception
process_response
当用户发起请求的时候会依次通过全部的中间件,这个时候的请求时process_request,最后到达views的函数中,views函数处理后,在依次穿过中间件,这个时候是process_respinse,最后中间件