DRF学习笔记(2)——解析器,Request,Response初步认识

解析器

REST framework 包含许多内置的解析器类,允许接受各种媒体类型(media types)的请求。还支持自定义解析器,

  • 可以使用 DEFAULT_PARSER_CLASSES 设置默认的全局解析器。例如,以下设置将只允许带有 JSON 内容的请求,而不是默认的 JSON 或表单数据。
setting.py
REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
    )
}
  • 还可以在基于类(API​​View )的视图上设置单个视图或视图集的解析器。
  • 在request.data中取数据
class RequestView(APIView):
    parser_classes = (JSONParser,)
    def get(self, request):
        print(request.data)
        return Response({'msg': 'request'})

Request

  • request.data 返回请求主题的解析内容。这跟标准的 request.POST 和 request.FILES 类似。
  • request.query_params 等同于 request.GET。
  • .parsers 属性。
    APIView 类或者 @api_view 装饰器将根据视图上设置的 parser_classes 或 settings 文件中的 DEFAULT_PARSER_CLASSES 设置来确保此属性(.parsers)自动设置为 Parser 实例列表。
class RequestView(APIView):
    parser_classes = (JSONParser,)
    def get(self, request):
        # 非GET传参
        print(request.data)
        # GET传参
        print(request.query_params)
        return Response({'msg': 'request'})

使用非GET传参,http://127.0.0.1:8000/req/ 在postman中的body定义{"name":"admin"}
使用GET传参,http://127.0.0.1:8000/req/?age=20
下方为输出结果
Starting development server at http://127.0.0.1:8000/
{'name': 'admin'}
<QueryDict: {'age': ['20']}>

Response

提供一个 Response 类来支持 HTTP 内容协商,该类允许你根据客户端请求返回不同的表现形式(如: JSON ,HTML 等)。
Response(data, status=None, template_name=None, headers=None, content_type=None)

  • data: 响应的序列化数据。
  • status: 响应的状态代码。默认为200。
  • template_name: 选择 HTMLRenderer 时使用的模板名称。
  • headers: 设置 HTTP header,字典类型。
  • content_type: 响应的内容类型,通常渲染器会根据内容协商的结果自动设置,但有些时候需要手动指定。
    Response 可以将内置类型转换成字符串。写到data的位置
    return Response(['1', '2', '3'])

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值