三、DRF框架中的APIView

DRF中的Request
继承DRF框架中APIView之后,request是DRF中的response对象,会根据请求头中的Content-Type,自动进行解析
Response对HttpRequest进行的拓展,HttpRequest有的功能Response都支持
request.data来接收x-www-form或json参数或文件,之前django提供的只能通过body来接收json参数,使用requet.POST来获取www-from表单类型的参数
request.query_params来接收查询字符串参数
 
DRF中的Response
如果请求头中没有Accept,那么默认返回json,如果添加了Accept,那么会以Accept指定的格式返回
def get(self, request, pk):
    one_project = self.get_object(pk)
    serializer = serializers.ProjectSerializer(instance=one_project)
    return Response(data=serializer.data, status=status.HTTP_200_OK)
Response(data,status=None,template_name=None,headers=None,Content-Type=None)
参数说明:
  data:序列化处理后的数据,一般为serillizer.data
  status:状态码
  template_name:渲染的模板,一般不需要指定
  headers:指定头部信息,一般不需要指定, 会自动处理
  Content-Type:指定格式,一般不需要指定,会自动根据Accept来处理
 
覆盖DRF框架中的默认配置
需要在Django项目的全局配置表setting中覆盖
REST_FRAMEWORK = {
    # 默认响应渲染类
    'DEFAULT_RENDERER_CLASSES':(
        # json渲染器为第一优先级
        'rest_framework.renderers.JSONRenderer',
        # DRF提供接口返回的一个内置页面,如果注释下方代码网页访问就只能看到接口返回的信息
        'rest_framework.renderers.BrowsableAPIRenderer'
    )
}

 

APIView与View的不同之处
传入到视图方法中的是Request对象,而不是Django中的HttpReauest对象
视图方法可以返回Response对象,会为响应数据处理为符合前端要求的格式
任何APIException异常都会被捕获到,并且处理成合适的响应信息
在进行dispatch()分布前
提供的功能:
authentication_classes 列表或元组,身份认证类
permission_classes 列表或元组,权限检查类
ehrottle_classes 列表或元组,流量控制类(主要为了反爬虫)
 

posted @ 2020-10-22 20:16  SoleMemory  阅读(202)  评论(0)    收藏  举报