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