zoukankan      html  css  js  c++  java
  • Django-website 程序案例系列-13 中间件

    自定义中间件1:

    from django.utils.deprecation import MiddlewareMixin    # 中间件需要引用的包
    
    class Row1(MiddlewareMixin): #自定义中间件函数       
        def process_request(self, request):
            print('1')
        def process_response(self, request, response):
            print('1')
            return response
    
    class Row2(MiddlewareMixin):  #自定义中间件函数
        def process_request(self, request):
            print('2')
        def process_response(self, request, response):
            print('2')
            return response
    
    class Row3(MiddlewareMixin):  #自定义中间件函数
        def process_request(self, request):
            print('3')
        def process_response(self, request, response):
            print('3')
            return response

    views.py

    def mid(request):
        print('mei qian')
        return HttpResponse('OK')
    

      

    返回的值: 执行的print反应了中间件的执行顺序如下

    自定义中间件2:

    from django.utils.deprecation import MiddlewareMixin
    
    class Row1(MiddlewareMixin): # 自定义中间件函数
        def process_request(self, request):
            print('1')
    
        def process_view(self, request, view_func, view_func_args, view_func_kwargs):
            print('11')
    
        def process_response(self, request, response):
            print('1')
            return response
    
    class Row2(MiddlewareMixin): # 自定义中间件函数
        def process_request(self, request):
            print('2')
    
        def process_view(self, request, view_func, view_func_args, view_func_kwargs):
            print('22')
    
        def process_response(self, request, response):
            print('2')
            return response
    
    class Row3(MiddlewareMixin): # 自定义中间件函数
        def process_request(self, request):
            print('3')
    
        def process_view(self, request, view_func, view_func_args, view_func_kwargs):
            print('33')
    
        def process_response(self, request, response):
            print('3')
            return response
    

      

    返回的值: 执行的print反应了中间件的执行顺序如下

     

    自定义中间件3:

    在urls.py中加入这个url: url(r'^mid/(?P<nid>d+)$', views.mid) # nid是传递的参数{nid: 'xxx'}
      def process_view(self, request, view_func, view_func_args, view_func_kwargs):  # nid可传递给中间件中的view_func_kwargs 接收一个键值{nid:'xxx'}      
        print('33')
    在urls.py中加入这个url:  url(r'^mid/(d+)$', views.mid) # 直接传递一个数值参数('3')
      def process_view(self, request, view_func, view_func_args, view_func_kwargs): # 可传递给中间件中函数的view_func_args  接收一个数值参数('3')
         print('33')
    

      

    中间件流程图:

    中间件中的异常处理:
    def process_exception(self, request, exception):  #此函数一般不执行除非中间件发生异常
      print('ex')
    
    中间件的render对象返回:
    class
      def render(self):
        return HttpResponse('OK')
    
    def test(request,nid):
      print('2')
      return Foo()
    
    def process_template_response(self,request,response): # 需要view中的函数返回的对象中具有render方法
      print('111')
      return response 
  • 相关阅读:
    《Android深入透析》之广播(Broadcast)
    曾经的程序员-《30岁的程序员,你迷惘了吗?》
    30岁的程序员,你迷惘了吗?
    Android: 详解触摸事件如何传递
    关于HTML5服务器发送事件(SSE)
    Android: 在onCreate()中获得对象尺寸
    jxl教程图文详解
    相当牛X的java版星际游戏
    程序员的无奈(十二):终于获得了投资
    图览各编程语言中敲击最多的键
  • 原文地址:https://www.cnblogs.com/kuku0223/p/8110141.html
Copyright © 2011-2022 走看看