Django--进阶
中间件
Django的生命周期
中间件的概念
中间件是介于request与response处理之间的一一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出,因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。
Django的中间件的定义:
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:
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', ]
每一中间件都有具体的功能
自定义中间件
中间件中一共有四个方法:
process_request
process_view
process_exception
process_response
process_request、process_response
当用户发起请求的时候会依次经过所有的中间件,这个时候的请求时process_request,最后到达views的函数中,views函数处理后,在依次穿过中间件,这个时候是process_respinse,最后