1.View
1.接收数据的方式:
url地址传参,form表单传参,请求头传参,非表单类型传参(Non-Form Data),请求体传参(json数据)
接收的数据存放的位置不同,返回的数据以字符串或者字典为准
httpresponse返回的字符串
jsonresponse返回的是字典,如果返回的是列表需要加safe=False
render用于模板template的返回信息,可以带参,可以返回字符串
从 POST 中获取表单数据 从 body 中获取 json 数据
body 是二进制,需要用 decode 解码成字符串 json=> dict
路径后必须是函数,不能是类视图:
解决办法:在类视图后加as_view() 。(类视图在 as_view() 执行,就会得到一个函数)
2.框架
1.使用drf框架的原因:
Django REST framework可以帮助我们大大提高REST API的开发速度。
注:DRF框架内容封装了很多东西,目的就是简化开发代码的编写,提高API接口的开发速度。
举例说明:
1)在序列化与反序列化时,虽然操作的数据可能不同,但是过程是相似的,这部分操作DRF框架进行了封装。
2)在开发REST API的视图时,虽然每个视图操作的数据可能不同,但增、删、改、查的基本流程是一样的,这部分代码DRF框架也进行了封装。
- 增:校验请求数据 → 反序列化-将数据保存到对象中 → 保存数据到数据库 → 将保存的对象序列化返回
- 删:判断要删除的数据是否存在 → 执行数据库删除 → 返回响应
- 改:判断要修改的数据是否存在 → 校验请求的数据 → 反序列化-将数据保存到对象中 → 保存数据到数据库 → 将保存的对象序列化返回
- 查(1个或多个):查询数据库 → 将数据序列化返回
2.drf框架的特点:
- 提供了定义序列化器的方法,使用序列化器可以进行数据的序列化和反序列化
- 提供了丰富的类视图、Mixin扩展类、子类视图、视图集,简化视图代码的编写
- 多种身份认证和权限控制方式的支持
- 内置了限流系统
- 直观的API web界面
- 可扩展性,插件丰富
3.APIView
1.APIView的特点:
APIView
是REST framework提供的所有视图的基类,继承自Django的View
类。
APIView
与View
的区别:
- 请求对象:传入到视图中的request对象是REST framework的
Request
对象,而不再是Django原始的HttpRequest
对象; - 响应对象:视图可以直接返回REST framework的
Response
对象,响应数据会根据客户端请求头Accpet
自动转换为对应的格式进行返回; - 异常处理:任何
APIException
的子异常都会被DRF框架默认的异常处理机制处理成对应的响应信息返回给客户端; - 其他功能:认证、权限、限流。
- 本身的特点:作为视图来说,接收的是json数据,返回的也是json数据
2.Response和Jsonresponse的异同:
1.相同点:返回的都是json数据,用于前端展示
2.不同点:Jsonresponse返回的json数据如果是列表的话需要加safe=False,Response直接返回信息
3.APIView设置限流和权限
四种权限:
# 职员可以访问()
is_staff=True
rest_framework.permissions.IsAdminUser
# 认证用户可以访问
is_active=True # 登录的人
rest_framework.permissions.