Django中中间件中的函数详解

  

一个中间件的例子

        导入的时间      django。网址导入逆向   从django.utils.deprecation进口MiddlewareMixin         类TimeItMiddleware (MiddlewareMixin):   def process_request(自我,要求):   返回      def process_view(自我、请求、func * args, * * kwargs):   如果请求。路径!=反向(“指数”):   回来没有      开始=time.time ()   响应=func(请求)   估价=time.time()——开始   打印(“流程视图:{:.2f}年代.format(估价)   返回响应      def process_excepttion(自我、请求、异常):   通过      def process_template_response(自我、请求、响应):   返回响应      def process_response(自我、请求、响应):   返回响应      之前      

中间件中的函数有:

  
      <李> process_request李   <李> process_view李   <李> process_tmplate_response李   <李> process_response李   <李> process_exception李   
  

下面分别进行介绍:

  

<强> process_request:
  

  

这是请求来到中间件中时讲入的第一个方法。一般情优下,我们以在这里做一些校验,比如用户登录或HTTP中者是否有认证头之类的验证。这个方法可以有两种返回值HttpResnonse或者,如果返回HttpResponse,那么接下米的处理方法只会执行process_response,其他方法将不会被执行。这里需要注意的是,如果你的中间件是设置配置的中间件的第一个,那么剩下的中间件也不会被执行;如果返回没有,那么Diango会继续执行其他方法。

  

<强> process_view:
  

  

这个方法是在process_request方法之后执行的,参数如上面代码所示,其中函数就是我们将要执行视图的方法,因此,如果要统计一个视图的执行时间,可以在这里做。它的返回值跟process_request一样,是HttpResponse或者,其逻辑也一样。如果返回没有,那么Django会帮你执行视图函数,从而得到最终的反应。

  

<强> Process_template_response:
  

  

执行完上面的方法,并且Django帮我们执行完,拿到最终的响应后,如果使用了模板的响应(这是指通过返回渲染(请求、“index . html”上下文={})方式返回的响应),就会来到这个方法中。在这个方法中,我们可以对反应做一下操作,比如内容类型设置,或者其他头的修改/增加。

  

<强> process_response:
  

  

当所有流程都处理完毕后,就来到了这个方法。这个方法的逻辑跟process_template_response是完全一样的,只是后者是针对带有模板的响应的处理。

  

<强> process_exception:
  

  

上面的处理方法是按顺序介绍的,而这个方法不太一样,只有在发生异常时,才会进入这个方法。哪个阶段发生的异常呢& # 63;

  

可以简单理解为在将要调用的视图中出现异常(就是在process_view的func函数中)或者返回的模板响应在渲染时发生的异常。但是需要注意的是,如果你在process_view中手动调用了函数,就像我们上面做的那样,就不会触发process_exception了。这个方法接收到异常之后,可以选择处理异常,然后返回一个含有异常信息的HttpResponse,或者直接返回都不处理,这种情况下Django会使用自己的异常模板。

  

以上节选自《Django企业开发实战》胡阳著。
  

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Django中中间件中的函数详解