django自带7个中间件,支持自定义

在使用django开发项目的时候如果涉及到全局相关功能都可以使用中间件
1.用户身份校验
2.权限校验
3.访问频率校验

请求来的时候和走的时候都需要经过中间件
django支持自定义并且暴露5个可以自定义的方法:
掌握:
1.process_request
2.process_response
了解:
1.process_view
2.process_template_response
3.process_exception

自定义中间件

1.在项目或应用下创建一个文件夹
2.文件夹内创建一个py文件
3.书写代码,且必须继承MiddlewareMixin
4.settings内配置路径才能生效

  1. from django.utils.deprecation import MiddlewareMixin
  2. class Mymiddleware(MiddlewareMixin):
  3. def process_request(self,request):
  4. pass
  5. def process_response(self,request,response):
  6. return response
  7. MIDDLEWARE = [
  8. 'django.middleware.security.SecurityMiddleware',
  9. 'django.contrib.sessions.middleware.SessionMiddleware',
  10. 'django.middleware.common.CommonMiddleware',
  11. 'django.middleware.csrf.CsrfViewMiddleware',
  12. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  13. 'django.contrib.messages.middleware.MessageMiddleware',
  14. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  15. 'app01.mymiddleware.mymd.Mymiddleware',#配置的路径
  16. ]

process_request
请求来到时候会经过django中间件中的每一个该方法
执行顺序:配置文件中的顺序
如果返回了HttpResponse对象,则请求原路返回,不再继续往后

用来做全局相关的限制功能

process_response
执行顺序和process_request相反

如果在一个中间件中的process_request中直接返回了HttpResponse,则执行当前中间件下的process_response后直接返回