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 
  • 相关阅读:
    模块(相当于Java里的包)
    if_else_while_for
    用户交互
    Python入门
    BigInteger类及方法应用
    selenium+java破解极验滑动验证码的示例代码
    Postman 使用详解
    Postman用法简介
    伟大架构师的秘密【转载】
    深入理解HTTP协议(转)
  • 原文地址:https://www.cnblogs.com/kuku0223/p/8110141.html
Copyright © 2011-2022 走看看