rest_framework框架下的Django声明和生命周期
Django声明周期(request)
- 客户端发起请求
- 请求经过wsgi
- wsgi: 是一个协议----web服务网关接口,即在web服务器和web应用之间做一个协议规范。这个协议不属于Django,Django只是运用wsgi生成socket。
- wsgiref: 实现wsgi协议的一个模块,模块的本质是一个socket服务端。(性能太低,实际部署不会用到)
- uwsgi:实现wsgi协议的一个模块,模块本质是一个socket服务端。(实际部署的时候用到)
- werzeug: 实现wsgi协议的一个模块,模块本质是一个socket服务端。(Flask框架)
- tornado: 实现wsgi协议的一个模块,模块本质是一个socket服务端。(Tornado框架没有用wsgi,socket完全是自己写的,这个也是tornado框架和另外两个框架之间的区别)
- 中间件
- url路由分配
- 找到处理请求的视图函数
-
视图函数与模型层进行交互,取出数据,视图层调用模版层,将数据渲染返回给客户端。
Django生命周期(rest_framework框架下)
- 客户端发起请求
- 请求经过wsgi
- url路由分配
- 分配路由后调用as_view()方法,执行内置view函数
- 内置的view函数调用调度方法dispath()
- dispatch()对请求进行封装处理
- 认证处理
- 权限处理
- 限流处理
dispatch()反射执行对应的方法,返回数据给服务端。
中间件&装饰器
- 中间件:适用于对请求进行批量的操作
- 场景:
- 基于角色的权限控制
- 用户认证
- csrf(原理: )
- session
- 做类似于黑名单的功能
- 日志记录(记录所有的请求)
- 场景:
- 装饰器:对某个请求做操作