中间件的定义
- 定义:中间件是django请求/响应处理的钩子框架,它是一个轻量级的、低级的插件系统,用于全局改变django的输入或输出
- 中间件以类的形式体现
- 每个中间件组件负责一些特定的功能,例如:django包含一个中间件组件AuthenticationMiddleware,她使用会话将用户与请求关联起来
中间件的使用
编写中间件:
中间件必须继承自django.utils.deprecation.MiddlewareMixin类
中间类实现的五种方法:
process_request(self, request):
- 作用:执行主路由之前被掉用,在每个请求上调用,返回None(请求通过)或者HttpResponse对象(请求不通过)
- 用途:过滤请求
process_view(self,request,callback,callback_args,callback_kwargs):
- 作用:callback:为视图函数;callback_args:视图函数的位置参数,callback_kwargs:视图函数的关键字参数;调用视图之前被调用,在每个请求上调用,返回None(请求通过)或者HttpResponse对象(请求不通过)
- 用途:用于代码层面的替换和过滤,这个方法可以拿到视图函数的参数
process_response(self,request,response):
- 作用:response:即是视图函数的响应对象;在所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
process_exception(self,request,exception):
- 作用:处理过程中抛出异常时被调用,返回一个HttpResponse对象
- 用途:用于一般用于捕获发生的异常,并将其邮件发送给开发人员
process_template_response(self,request,response):
- 作用:在视图函数执行完毕,且视图函数返回的对象中包含render方法时被调用;该方法需要返回实现了render方法的响应对象
注:中间件中的大多数方法在返回None时表示忽略当前操作进入下一项事件,当返回HttpResponse对象时,表示此请求结束,直接返回给客户端。
注册中间件
需要在settings.py文件中的MIDDLEWARE数组中进行注册。
Django流程图如下(很重要,建议反复观看)
希望本篇文章对你有所帮助