zoukankan      html  css  js  c++  java
  • 进一步理解Django中的middleware

    首先,Django文档中是这样描述的:Middleware is a framework of hooks into Django’s request/response processing. It’s a light, low-level “plugin” system for globally altering Django’s input or output.

    也就是说中间件是一个钩子框架可以理解为过滤器,可以过滤发送到Django视图层的请求,也可以过滤视图层发送给前端的响应.它是一个轻量级的底层插件系统,用途在全局修改Django的输入或者输出。

    我们在进行视图编写的时候会频繁用到request.user,这个user属性是怎么来的呢?

    其实在Django默认提供的中间件AuthenticationMiddlewar,这个中间件在每个view视图函数执行之前,把user设置为request的属性

    Django 在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干
    预,方法如下:

    1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件。

    def __init__():
       pass

    2.处理请求前:在每个请求上调用,返回 None 或 HttpResponse 对象。
    def process_request(request):
      pass

    3.处理视图前:在每个请求上调用,返回 None 或 HttpResponse 对象。
    def process_view(request, view_func, view_args, view_kwargs):
      pass

    4.处理模板响应前:在每个请求上调用,返回实现了 render 方法的响应对象。

    def process_template_response(request, response):
      pass

    5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回 HttpResponse 对象。
    def process_response(request, response):
      pass

    6.异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个 HttpResponse 对象。
    def process_exception(request,exception):
      pass

    而且

    中间件的执行顺序非常重要

    在请求视图被处理,中间件由上至下依次执行。

    在请求视图被处理,中间件由下至上依次执行。

     

     

  • 相关阅读:
    案例分析
    阅读任务
    准备工作
    课程总结
    十三周总结
    第十二周总结
    第十一周学习总结
    第十周学习总结
    第九周课程总结&实验报告7
    第八周课程学习总结与实验6
  • 原文地址:https://www.cnblogs.com/ajiuna/p/9343622.html
Copyright © 2011-2022 走看看