DRF请求与响应的控制解析方式

发布于:2024-04-16 ⋅ 阅读:(154) ⋅ 点赞:(0)

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, MultiPartParser

class 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 JSONRenderer

class publish(APIView):
    renderer_classes = [JSONRenderer]
  • 现在当前端传来非json、formdata格式数据时将会直接返回错误信息

方式2:全局配置文件使用

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
    ],
}


网站公告

今日签到

点亮在社区的每一天
去签到