zoukankan      html  css  js  c++  java
  • django中间件

    一. 自定义中间件: (可定义五个方法)

    process_request(self,request)

    process_view(self, request, view_func, view_args, view_kwargs)

    process_template_response(self,request,response)

    process_exception(self, request, exception)

    process_response(self, request, response)

     二. 各方法执行顺序

    >中间件中但凡有一个process_request返回HttpResponse对象,则立马通过自己的process_response

       以及自己之前的中间件中process_response将对象传递给浏览器; 该中间件之后的其它中间件和视图

       函数都不会执行,所有的process_view也不会执行.

    >process_request有一个参数,就是request,这个request和视图函数中的request是一样的。

     它的返回值可以是None也可以是HttpResponse对象。返回值是None的话,按正常流程继续走,交给下

     一个中间件处理,如果是HttpResponse对象,Django将不执行视图函数,而将响应对象返回给浏览器。

    >当流程通过所有process_request时都返回None,则会执行process_view方法,如所有的process_view

      都返回None,则开始执行视图函数; 但凡其中有一个返回个对象,则跳过其下中间件中的所有process_view

      方法和视图函数,直接倒叙执行中间件中的process_response

    注意: 所有的process_response都必须且只能返回个httpresponse对象.

    三. 以上为常用的3中方法,后两种方法如下:

        process_exception  process_template_response简述

      1. process_exception(self, request, exception)

    该方法两个参数:

    一个HttpRequest对象

    一个exception是视图函数异常产生的Exception对象。

    这个方法只有在视图函数中出现异常了才执行,它返回的值可以是一个None也可以是一个HttpResponse对象。

    如果是HttpResponse对象,Django将调用模板和中间件中的process_response方法,并返回给浏览器,否则

    将默认处理异常。如果返回一个None,则交给下一个中间件的process_exception方法来处理异常。它的执行

    顺序也是按照中间件注册顺序的倒序执行。

       2. process_template_response(self, request, response)

    它的参数,一个HttpRequest对象,responseTemplateResponse对象(由视图函数或者中间件产生)。

    process_template_response是在视图函数执行完成后立即执行,但它有一个前提条件,那就是视图函数返

    回的对象有一个render()方法(或者表明该对象是一个TemplateResponse对象或等价方法)。

     

  • 相关阅读:
    构建之法第十三~十七章阅读
    构建之法第十,十一,十二章阅读
    构建之法第八,九,十章阅读
    Sprint会议计划
    作业6
    作业5 四则运算 测试与封装 5.2
    作业5 四则运算 测试与封装 5.1
    构建之法2
    做汉堡
    构建之法阅读
  • 原文地址:https://www.cnblogs.com/quzq/p/9905027.html
Copyright © 2011-2022 走看看