zoukankan      html  css  js  c++  java
  • Django之请求生命周期

    settings.py中间件执行

     

     

     

    自定义中间件的配置:

    1)任意新建一个py文件,导入模块from django.utils.deprecation import MiddlewareMixin

    2)在py文件中自定义中间件类,必须继承 MiddlewareMixin

    3)在settings.py文件的MIDDLEWARE列表中进行配置,追加新建的中间件py文件类

     

    自定义中间件类中定义的五个方法:

    1process_request(self, request)【常用】

     

    ·         wsgi.py进行socket封装之后,urls.py控制器路由分发之前,对所有的请求对象request都执行的函数

    ·         process_request函数参数中要有封装好的request对象,这视图函数的request一样

    ·         process_request方法是按MIDDLEWARE列表中的中间件类顺序执行

    ·         如果想指定请求绕过此中间件的该方法,可设置白名单进行请求判断

    ·         process_request函数只有在无返回值或者返回值为None时才会继续执行后续中间件的process_request方法,否则就会终止后续程序执行,直接返回该returnresponse对象

     

     

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

     

    ·         urls.py控制器路由分发之后,views.py视图函数执行之前

    ·         process_view函数参数中要有封装好的request对象,视图函数名view_func视图函数参数view_args,view_kwargs

    ·         process_view方法是按MIDDLEWARE列表中的中间件类顺序执行

     

    3process_exception(self,request,exception)

    ·         views.py视图函数执行过程中,捕获异常,自动触发

    ·         process_exception函数参数要有封装好的request对象,异常类型exception

    ·         process_exception方法方法是按MIDDLEWARE列表中的中间件类逆序执行

     

    4process_template_response(self,request,response)

    ·         views.py视图函数执行过程中,response对象中必须定义了render()方法

    ·         process_template_response函数参数要有封装好的request对象和响应的response对象

    ·         process_template_response方法是按MIDDLEWARE列表中的中间件类逆序执行

     

    5process_response(self,request,response)【常用】

     

    ·         views.py视图函数执行响应response对象,wsgi.py响应send之前,对所有的响应对象response都执行的函数

    ·         process_response函数参数要有封装好的request对象和响应的response对象

    ·         process_response方法是按MIDDLEWARE列表中的中间件类逆序执行

    ·         process_response函数中必须加上return,否则报错,return response是视图函数响应对象时,会进行接力响应,如果在任意process_responsererun了自定义的内容,响应结果即为MIDDLEWARE列表中索引最小的中间件类的return结果

     

     

    自定义中间件类方法执行顺序

     

     

     

     

     

    中间件的应用案例:

    1、做IP访问频率限制

    某些IP访问服务器的频率过高,进行拦截,比如限制每分钟不能超过20次。

    2URL访问过滤

    如果用户访问的是login视图(放过)

    如果访问其他视图,需要检测是不是有session认证,已经有了放行,没有返回login,这样就省得在多个视图函数上写装饰器了!

     

  • 相关阅读:
    VS 文件编码
    CSS中强大的EM 弹性布局
    编辑器【updating】
    下一代Jquery模板JsRender
    HTML 特殊符号编码对照表
    ASP.NET 文摘 [updating]
    Html5/Html CSS3/css 文摘 [updating]
    在Sublime Text 2中设置任意扩展名文件的默认语法
    Delphi笔记Indy10.5.5 IdTcpServer 与 IdTcpClient Demo 服务器端
    基于silverlight的工作流编辑器
  • 原文地址:https://www.cnblogs.com/open-yang/p/11222521.html
Copyright © 2011-2022 走看看