django-restframework:组件1-APIView

django-restframework:组件1-APIView

1 使用django restframework
在这里插入图片描述
pip install djangorestframework ps:下载版本3.12.4

2 CBV模式views
在这里插入图片描述
在这里插入图片描述

查看APIView源码:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
注释说明,基于会话的身份验证是显式CSRF验证的,所有其他身份验证都是CSRF豁免的,所以我们可以不需要在dispatch中增加csrf_exempt
在这里插入图片描述
注意:因为settings中csrf中间件存在,post请求如果不带上csrftoken会导致403错误,CBV模式下,CSRF需要在dispatch中调用csrf_exempt装饰器豁免
在这里插入图片描述

postman调试(post请求在body中传参):
在这里插入图片描述
在这里插入图片描述
注意:在djangorestframework的APIView(rest_framework.views)中,post请求一般是request.data获取用户传参(request.POST无法拿到);在django的View(django.views)中,post请求一般是request.POST.dict()来获取用户传参,同理,APIView依靠request.data拿到的也是QueryDict类型数据,也可以通过dict()转换为需要的字典数据

—————————————————————————————
**djangorestframework官方文档扩展
**(https://www.django-rest-framework.org/tutorial/2-requests-and-responses/):

请求对象(Request objects)
REST框架引入了一个扩展了常规HttpRequest的Request对象,并提供了更灵活的请求解析。Request对象的核心功能是request.data属性,它与request.POST类似,但对于使用Web API更为有用。

request.POST # 只处理表单数据 只适用于’POST’方法
request.data # 处理任意数据 适用于’POST’,'PUT’和’PATCH’方法

响应对象(Response objects)
REST框架还引入了一个Response对象,这是一种获取未渲染(unrendered)内容的TemplateResponse类型,并使用内容协商来确定返回给客户端的正确内容类型。

return Response(data) # 渲染成客户端请求的内容类型。

状态码(Status codes)
在你的视图(views)中使用纯数字的HTTP 状态码并不总是那么容易被理解。而且如果错误代码出错,很容易被忽略。REST框架为status模块中的每个状态代码(如HTTP_400_BAD_REQUEST)提供更明确的标识符。使用它们来代替纯数字的HTTP状态码是个很好的主意。

包装(wrapping)API视图
REST框架提供了两个可用于编写API视图的包装器(wrappers)。

用于基于函数视图的@api_view装饰器。
用于基于类视图的APIView类。
这些包装器提供了一些功能,例如确保你在视图中接收到Request实例,并将上下文添加到Response,以便可以执行内容协商。

包装器还提供了诸如在适当时候返回405 Method Not Allowed响应,并处理在使用格式错误的输入来访问request.data时发生的任何ParseError异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值