一、Django中间件
django默认自带七个中间件,还支持用户自定义中间件
1.作用:全局的处理:会对所有的资源请求,所有的返回方式,所有的路由到视图的跳转、所有视图层的异常进行处理。
-
使用场景:当想用全局功能的时候
-
1:限制访问频率校验:这种功能应该在中间件中编写,减少对django后端资源的浪费
-
2:用户权限校验:(在web领域:权限就是网址)登录成功之后,每次请求来的时候,在请求中辨别出用户权限,如果符合则可以访问某些功能
2.Django流程图
二、自定义中间件
1.创建存储自定义中间件代码的py文件或者目录
2.参考自带中间件的代码编写类并继承
3.在类中编写五个可以自定义中间件的方法
- 需要掌握的
process_request
process_response
- 需要了解的
process_view
process_exception
process_template_response
4.在配置文件中需要注册才能生效
三、中间件执行流程
2.request和response通过中间件的顺序
2.process_request和process_response方法
-
process_request
1.请求来的时候会依次经过每一个在settings中注册了的中间件里面的该方法,在注册顺序从上往下依次执行,每个中间件中的process_request,如果没有process_request方法则跳过
2.如果方法自己返回了HttpReponse对象,那么不再往后执行,直接原路返回给前端
class MyMiddleware1(MiddlewareMixin):
def process_view(self, request, view_func, view_args, view_kwargs):
print("我是中间件1的view")
-
process_response
1.响应走的时候,会从下往上一次经过每一个注册了的中间件里面的方法,如果没有则直接跳过
2.该方法有两个形参,形参只
3.如果在执行process_response方法的时候,直接返回了HttpReponse对象,那么会原路返回执行process_response