十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
怎么在Django框架中实现一个MiddleWare中间件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的网站制作、网站设计、网站维护、达州服务器托管解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、商城网站定制开发、政府网站等各类型客户群体,为全球1000+企业提供全方位网站维护、服务器维护解决方案。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, *args,**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
看完上述内容,你们掌握怎么在Django框架中实现一个MiddleWare中间件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!