DRF请求与响应的控制解析方式
请求(Request)
DRF的Request类重写了原先Django的request,它比原先多了以下功能
- 去除了csrf校验
- 新增了request.data属性,可以解析前端传来的各种类型数据(urlendecode、form-data,json)
- 将get请求重写成了query_params
- 控制解析的格式
- 保留了其他的原有request的所有功能
控制解析格式
方式1:视图类中局部使用
from rest_framework.views import APIView
from rest_framework.parsers import JSONParser, FormParser, MultiPartParserclass publish(APIView):parser_classes = [JSONParser, FormParser]
- 现在当前端传来非json、formdata格式数据时将会直接返回错误信息
方式2:全局配置文件使用
REST_FRAMEWORK = {'DEFAULT_PARSER_CLASSES': ['rest_framework.parsers.JSONParser','rest_framework.parsers.FormParser',# 'rest_framework.parsers.MultiPartParser',],
}
响应(Response)
DRF为我们提供了Response类,他也比原有Django的response方式更加强大
Response参数:
(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None):
data=None
:可以使字典,列表,字符串,后续会放在响应体中status=None
:http响应状态码,如果不传,默认是200 ,status包下定义了一堆http状态码常量template_name=None
:一般不用,用浏览器方法–可以看到的样子headers=None
:响应头exception=False
:如果设置为 True,表示响应的数据是一个异常对象,将会使用异常处理程序来呈现数据content_type=None
:指定响应编码格式,一般默认
其中比较重要的是:data,status,headers
控制解析格式
方式1:视图类中局部使用
from rest_framework.views import APIView
from rest_framework.renderers import JSONRendererclass publish(APIView):renderer_classes = [JSONRenderer]
- 现在当前端传来非json、formdata格式数据时将会直接返回错误信息
方式2:全局配置文件使用
REST_FRAMEWORK = {'DEFAULT_PARSER_CLASSES': ['rest_framework.renderers.JSONRenderer',],
}