一、 Django  中间件

django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件:

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',
]

1、中间件中可以定义四个方法:

process_request(self,request)   #每个进入view视图中请求都要经过这个函数
process_response(self, request, response) #每个从view视图中返回的response都会触发这个函数
process_view(self, request, callback, callback_args, callback_kwargs) #经过路由映射找到view中对应的方法后,就会触发这个函数,找不到就不会触发
process_template_response(self,request,response) # 如果Views中的函数返回的对象中,具有render方法,这个函数才会执行
process_exception(self, request, exception)  #如果对应的视图中的函数出现异常,这个函数才会执行

2、自定义中间件

与mange.py在同一层级下新建目录Middle,在Middle新建m1.py(文件名称随意):

1、在m1.py中定义三个中间件

class Foo:
    # render 方法用来触发process_template_response函数
    def render(self):
        return HttpResponse("template_response")

def test(request):
    print("")
    return Foo()
views.py

相关文章: