drf 深入了解 request(请求)

总结最常使用的请求解析

REST framework的请求对象提供灵活的请求解析,允许你以与通常处理表单数据相同的方式使用JSON数据或其他媒体类型处理请求。

.data

最常使用的请求方式- 应用于 post, files(个人比较不推荐在使用文件时使用),put, patch

request.data 返回请求正文的解析内容。这与标准的 request.POSTrequest.FILES 属性类似,除了下面的:

  • 它包括所有解析的内容, 包括 文件或非文件 输入。
  • 它支持解析除POST之外的HTTP方法的内容,这意味着你可以访问PUTPATCH请求的内容。
  • 它支持REST framework灵活的请求解析,而不仅仅支持表单数据。 例如,你可以以与处理传入表单数据相同的方式处理传入的JSON数据。

.query_params

通常使用在get请求中,request.query_paramsrequest.GET的一个更准确的同义词。

为了让你的代码清晰明了, 我们建议使用 request.query_params 而不是Django标准的request.GET。这样做有助于保持代码库更加正确和明了——任何HTTP方法类型可能包括查询参数,而不仅仅是GET请求。

.parsers

你通常并不需要访问这个属性。

如果客户端发送格式错误的内容,则访问request.data可能会引发ParseError。默认情况下REST framework的 APIView类或@api_view装饰器将捕获错误并返回400 Bad Request响应。 如果客户端发送具有无法解析的呃逆荣类型的请求,则会引发 UnsupportedMediaType 异常, 默认情况下会捕获该异常并返回 415 Unsupported Media Type 响应。

APIView类或@api_view装饰器将根据view中设置的parser_classes集合或基于DEFAULT_PARSER_CLASSES设置,确保此属性自动设置为Parser实例列表。


其他有内容请参考提供的官方文档


drf 的官方文档