Django中间键

from django.utils.deprecation import MiddlewareMixin


class MyMiddleware(MiddlewareMixin):
    def process_request(self,request):
        print('request')

    def process_response(self,request,response):
        print('response')
        #自定义中间件当消息从视图函数返回必须要在中间process_reponse中返回response
        #不然会丢失
        return response
    def process_view(self,request,view_func,view_args,view_kwargs):
        print('第一个中间件中的视图函数')

配置文件

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'app01.mymiddleware.aaa.MyMiddleware'
]

django的请求生命周期

 

执行的顺序:

当中间件中都没有process_views函数时

  当有request请求时,先从上到下执行中间件中的process_request函数,执行完接着执行

  视图函数,视图函数执行完就从下到上执行中间件中的process_response函数

  当process_request函数返回None时,中间件往下执行,当返回HttpResponse时,

  这个中间件往下的中间件都不会执行,直接从这个中间件的process_response函数往回执行

 

 

 

 

 

 

posted @ 2019-07-21 18:46  huikejie  阅读(204)  评论(0)    收藏  举报