zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [hdu5312]数的拆分,数学推导
    [POJ1038]状压DP
    [hdu2112]最短路
    [hdu1532]最大流
    [hdu5256]LIS模型
    [hdu5255]枚举
    [hdu5254]BFS
    [hdu5270]按位统计,容斥,归并
    Elasticsearch在Centos 7上的安装与配置
    手动安装java1.8
  • 原文地址:https://www.cnblogs.com/zhangningyang/p/8507918.html
Copyright © 2011-2022 走看看