Django中间件

?
1
2
3
4
5
6
7
8
9
10
11
中间件
     - 是一个轻量级 底层的插件系统, 可以介入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

 

转载于:https://www.cnblogs.com/zhangningyang/p/8507918.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值