【DRF】 Request 和 Response

1,618 阅读1分钟

DRF 的 Request 和 Response

DRF 对 Django 原生的 Request 和 Response做了一层封装,给我们的使用带来了更大的便利

Request

request.data

返回请求正文的已解析内容,GET和POST都一样

  • 它包括所有已解析的内容,包括文件和非文件输入。
  • 它支持解析除HTTP方法之外的其他内容POST,这意味着您可以访问内容PUT和PATCH请求。
  • 它支持REST框架的灵活请求解析,而不仅仅支持表单数据。例如,您可以像处理传入表单数据一样处理传入的JSON数据

request.query_params

里面放有请求头传递过来的参数
不止是GET的请求头,POST PUT DELETE的请求头都会在这里面
建议使用request.query_params而不是Django的标准request.GET

request.parsers

内容解析的 parser
通常不需要访问此属性

request.user

获取当前的用户

requset.auth

通常不需要访问此属性

Responses

支持各种类型的返回

  • data: 返回的数据
  • status: 状态码,默认是200
  • template_name: 返回 template
  • headers: http headers
  • content_type: http content_type

应用

结合 DRF 的 filter 过滤数据

class GoodsListView(mixins.ListModelMixin, viewsets.GenericViewSet):

    # queryset = Goods.objects.all()  写了 get_queryset(self): 就可以不用写这个配置
    serializer_class = GoodsSerializer
    pagination_class = GoodsPagination  # 调用自定义的分页

    def get_queryset(self):
        queryset = Goods.objects.all()  # 默认返回全部数据
        price_min = self.requset.query_params.get("price_min", 0)  # 获取前端请求头中的参数,后一个参数是默认值
        if price_min:
            queryset = queryset.filter(shop_price__gt=int(price_min))
        return queryset