django的中间件---介绍与重写

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

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


MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

在项目同名文件夹里面创建新的叫middleware.py的文件,在里面重写中间类:

class NewMid():
    def __init__(self):
        print('这是hi我们的中间件的init')


    def process_request(self, request):
        '''处理请求之前'''
        print('process_request')


    def process_view(self,request,view_func,*args,**kwargs):
        '''处理视图之前'''

        print('process_view')

    # def process_response(self, request, response):
    #     '''处理响应完成之后'''
    #     print('process_response')

    def process_exception(self,request,exception):
        '''异常处理'''
        # raise Exception('我是异常') 写在视图里面,这里做的示范
        print('process_exception')

然后在项目文件夹的setting里面MIDDLEWARE_CLASSES里,注册并关联这个这个中间类:

    'watercar.middleware.NewMid',     #与minddleware.NewMid 产生关联

这样就完成了中间件的重写,如果你想在’’‘处理请求之前’’’、’’‘处理视图之前’’’、’’‘处理响应完成之后’’’ 等,这些时间里做什么就直接可以做了。

猜你喜欢

转载自blog.csdn.net/sui_yi123/article/details/82909618