django中间件

为什么要使用中间件:

所有的请求来了都会先走到中间件,不是urls,比如每一个请求都需要登录 ,每一次都需要校验token,那么每次都需要在views里面验证,在每次请求来之前都在中间件里面处理,如果token不对,直接返回,就不需要走到后面的流程了,效率就高了

1.首先要在app的目录下建立一个py中间件文件middle_wares.py

代码如下:

from . import models
class TestMiddleWare(MiddlewareMixin):

    def process_request(self,request):
        '''请求过来之后先走到的这里'''
        path = request.path_info
        interface = models.Interface.objects.filter(path = path).first()
        if interface:
            return HttpResponse(interface.response)


    def process_response(self,request,response):
        #拦截返回的
        print('response....')
        return response

    # def process_exception(self,request,exception):
    #     #拦截异常的
    #     print('出异常了。。')
    #     return HttpResponse('hhhh')

2.然后需要在settings.py文件里面配置

代码如下:

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',
    'user.middle_wares.TestMiddleWare'
]

 3.

无中间件的流程:client---urls -- views---content_process---response

有中间件的流程:client---中间件---urls ---views ---content_process--response

原文地址:https://www.cnblogs.com/liulilitoday/p/13580986.html