Django框架中的中间件Middleware

一、什么是中间件

  官方说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子,他是一个轻量、低级别的插件系统;

  影响:影响全局范围内改变Django的输入和输出。影响是全局的;所以需要谨慎使用;

  其实我们一直在试用中间件,像之前的Csrf和Session都是中间件:只是我们没有意识到而已;

  打开Django项目的Setting.py文件,里面的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',
    'Test_Middleware.Per_Middleware.MD1',
    'Test_Middleware.Per_Middleware.MD2',
]

  在MIDDLEWARE配置里面的,一个个字符串,这些字符串都是一个个的类,也就是一个个的中间件类;

  像我们注释掉的Csrf这个中间件,这样我们在提交post请求时就不会被forbidden了,当我们使用{{ csrf_token }}以后就不需要注释这个中间件了;

二、如何定义一个自己中间件

  我们要实现自己定义的中间件:1.需要继承Django开发好的MiddlewareMixin类; 2.重构父类的五个方法(根据需要决定实现方法的个数); 3.把自定义的中间件类添加到Django项目的setting.py的MIDDLEWARE的配置里面;

  中间件实现的方法:

  process_request(self, request):

  process_response(self, request, response):

  process_view(self, request, view_func, view_args, view_kwargs):

扫描二维码关注公众号,回复: 9289865 查看本文章

  process_exception(self, request, exception):

  process_template_response(self, request, response):

  这五个方法:

    request, view, exception, template_response这四个方法的返回值可以是None 或者HttpResponse对象(HttpResponse  render  rediect);

    response的必须要有返回值且必须为HttpResponse对象(HttpResponse  render  rediect);

  

猜你喜欢

转载自www.cnblogs.com/hgqcore/p/12333774.html