rest-framework框架有哪些作用?
一共有十点。
路由
- 可以通过as_view传参数,根据请求方式不同执行相应的方法
- 可以在url中设置一个结尾,类似于: .json
视图
- 帮助开发者提供了一些类,并在类中提供了多个方法以供我们使用。
版本
- 在url中设置version参数,用户请求时候传入参数。在request.version中获取版本,根据版本不同做不同处理
认证
- 写一个类并注册到认证类,在类的的authticate方法中编写认证逻辑。
- 认证成功 返回一个元组(user,auth)
- 认证失败 raise AuthticateFaild(....)
- None 匿名
权限
- 写一个类并注册到权限类,在类的的has_permission方法中编写认证逻辑。
- True 有权限
- False 没有权限
频率限制
- 写一个类并注册到频率类,在类的的 allow_request/wait 方法中编写认证逻辑。
allow_request
- True
- False 如果返回False,那么就要执行wait (等待)
解析器
- 根据ContentType请求头,选择不同解析器对 请求体中的数据进行解析。
POST /index/ http1.1. host:11.11.11.11 Content-Type:url-formendo.... user=alex&age=123 POST /index/ http1.1. host:11.11.11.11 Content-Type:application/json {....}
分页
- 对从数据库中获取到的数据进行分页处理: SQL -> limit offset
- 根据页码:http://www.luffycity.com/api/v1/student/?page=1&size=10 - 根据索引:http://www.luffycity.com/api/v1/student/?offset=60&limit=10 - 根据加密:http://www.luffycity.com/api/v1/student/?page=erd8
序列化
- 对queryset序列化以及对请求数据格式校验。
渲染器
- 根据URL中传入的后缀,决定将数据如何渲染到页面上。
根据Django请求声明周期,执行顺序:
路由-->视图-->版本-->认证-->权限-->频率-->解析器-->序列化-->分页-->渲染
出现这种问题:
如何解决?
setting.py