您的位置:首页 > 编程语言 > Go语言

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: