什么是中间件?
在全局对Django的请求做自定义操作。
中间件能做什么?
视图函数能做的事就能提到中间件去做。
例:登陆验证、访问限制
自定义中间件:
Django中间件的五个方法:
中间件 | 参数 | 按Django中间件注册的(正/反)序执行 | 执行时间 | 返回值 |
---|---|---|---|---|
process_request(self, request) | request:和视图函数中的request是同一个对象 | 正序 | 在视图函数之前执行 | 返回None:请求继续向后执行;返回响应对象,请求直接结束 |
process_response(self, request, response) | request:和视图函数中的request是同一个对象; response:视图函数返回的response | 反序 | 返回响应后执行 | 返回的必须是response对象 |
process_view(self, request, view_func, view_srgs, view_kwargs) | request:请求;view_func:要执行的视图函数;view_args:视图函数的位置参数;view_kwargs:视图函数的关键字参数 | 正序 | 在中间件的process_request方法之后视图函数之前执行 | 返回None:请求继续向后执行; 返回响应对象:直接走process_request |
process_template(self, request, response) | 反序 | 在视图函数返回对象带有render方法时执行 | 返回response | |
process_exception(self, request, exception) | exception;异常 | 反序 | 只要有中间件中的process_exception返回响应,就不再向后走了 | 返回None:请求继续向后执行 |