Django框架教程之中间件MiddleWare浅析
前言 Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。 我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。 中间件的原理其实就是定义了一个装饰器,但是这个装饰器可以对整个项目中的所有方法进行装饰; 我们可以通过中间件,对请求对象和响应对象进行相应的干预操作。 实现中间件的流程: 1.在子应用中编写一个middleware.py的文件 def my_middleware(get_response): print('中间件初始化') def middlewraer(request,*args,**kwargs): print('在执行执行前对请求进行干预') # 加入干预代码,主要应用白名单黑名单 if request.META['USER'] == 'KG': return HttpResponse('该用户无法访问') ret = get_response(request,**kwargs) print('在执行后对响应进行干预') return ret return middlewrae 2. 在setting文件中注册中间件 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', # 注册中间件 'users.middleware.my_middleware',] 注意:Django运行在调试模式下,中间件init部分有可能被调用两次。 多个中间件执行流程: 1. 中间件会将setting文件中的MIDDLEWARE列表进行逆序,所以初始化的顺序时从下向上的; 2. 在调用时,即编写顺序上第一个中间件装饰的是编写顺序上的第二个中间件,而编写顺序上的第二个中间件装饰的才是视图函数; 3. 在调用结束返回时,会先将视图函数的结果返回给编写顺序上的第二个中间件,然后再返回给编写顺序上的第一个中间件。 代码解读: @decorator1 @decorator2 def index(View): pass 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |