zoukankan      html  css  js  c++  java
  • Django的生命周期与中间件的流程

    Django生命周期图

    Django的中间件
    第一步中间件在setting.py的MIDDLEWARE列表中进行注册
    写一个类让其继承MiddlewareMixin类(from django.utils.deprecation import MiddlewareMixin)
    第三步就可以在其类中重写父类的5中方法
    
    这些方法中的参数都是与视图函数参数对应的
    process_request(self, request)  主要方法。请求刚进来时,执行视图函数之前调用。
    process_view(self, request, callback, callback_args, callback_kwargs)  URL路由匹配成功后,执行视图函数之前调用(不执行函数),拿到视图函数对象,及其所有参数。
    process_exception(self, request, exception)  执行视图函数中遇到异常时调用。
    process_template_response(self, request, response)  很少用。执行了render()渲染方法后调用。
    process_response(self, request, response)  主要方法。执行视图函数结束之后有响应时调用。(每个方法中retuen response 他才会走上一个中间件的process_response方法)
    
    中间件的流程:
    首先第一步会执行中间件列表中的使用的process_request(self, request)方法,当达最后一个中间件后会执行路由匹配(不执行视图函数),然后又重第一个中间件开始执行process_view(self, request, callback, callback_args, callback_kwargs)方法,执行到最后一个中间件后执行路由匹配---->视图函数返回值,在执行process_response(self, request, response)方法由中间件最后一个往第一个原路执行,最后返回给用户
    其中如果process_request(self, request)与process_view(self, request, callback, callback_args, callback_kwargs)如果遇见return render,httpresponse,redirect会直接从该中间件往回执行process_response(self, request, response)
  • 相关阅读:
    今天是元旦啊
    [待解决]python 函数加括号和不加括号的区别
    Jupyter Notebook的快捷键列表误操作发现的新大陆
    Series选择和过滤
    做鸢尾花切片练习中的'&'问题:(&,|)和(and,or)
    报错合集
    关于随机数种子seed的问题尽量使用numpy下的seed
    pandas创建Series序列/hashable
    在jupyter notebook中插入截图
    xml反序列化时,如何生成与之对应的类文件
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/14312927.html
Copyright © 2011-2022 走看看