Django中间件
2017-09-22 13:50
274 查看
中间件
中间件 - 是一个轻量级 底层的插件系统, 可以介入Django的请求和响应过程,修改Django的输入或输出 - 每个中间件组件是一个独立的Python类.可以定义下面方法中的一个或多个 __init__: 无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件 process_request(request): 执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象 process_view(request,view_func,view_args,view_kwargs): 调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象 process_template_response(request.response): 在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象 process_response(request,response): 所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpReponse对象 process_exception(request,response,exception): 当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象 - 如果你想干预哪个环节 只需编写对应的类做处理并注册到中间件调用的配置文件中
from django.conf import settings from django.shortcuts import redirect class MiddlewareMixin(object): def __init__(self, get_response=None): self.get_response = get_response super(MiddlewareMixin, self).__init__() def __call__(self, request): response = None if hasattr(self, 'process_request'): response = self.process_request(request) if not response: response = self.get_response(request) if hasattr(self, 'process_response'): response = self.process_response(request, response) return response class M1(MiddlewareMixin): def process_request(self,request): print('m1.process_request') def process_response(self,request,response): print('m1.process_response') return response class M2(MiddlewareMixin): def process_request(self,request): print('m2.process_request') def process_response(self,request,response): print('m2.process_response') return response
View Code
相关文章推荐
- Django源码分析4:staticfiles静态文件处理中间件分析
- Django 内建 中间件组件
- 30.Django CSRF 中间件
- Django----中间件详解
- Django中间件学习笔记
- django 1.8 官方文档翻译: 3-6-2 内建的中间件
- 详解Django中间件执行顺序
- 详解Django中间件的5种自定义方法
- Django进阶之中间件
- Django之中间件、缓存以及信号
- 关于django中间件的知识
- django 中间件
- Django源码分析5:session会话中间件分析
- Django之中间件
- Django系列--尝试写个midlleware(中间件)
- 缓存在中间件中的应用机制(Django)
- Python开发【Django】:中间件、CSRF
- Django内置的中间件说明
- Django中间件
- 从django的中间件直接返回请求