gpt4 book ai didi

python - DRF 中的 request.data 与 Django 中的 request.body

转载 作者:太空狗 更新时间:2023-10-29 22:15:21 38 4
gpt4 key购买 nike

Django REST 框架引入了一个扩展常规 HttpRequest 的 Request 对象,这个新对象类型具有 request.data 以访问“POST”、“PUT”和“PATCH”请求的 JSON 数据。

但是,我可以通过访问作为原始 Django HttpRequest 类型对象的一部分的 request.body 参数来获取相同的数据。

我看到的一个区别是 request.data 只能访问一次。此限制不适用于 request.body。

我的问题是两者之间有什么区别。当应该有一个——最好只有一个——明显的方法来做这件事时,DRF 提供了一种替代方法来做同样的事情,什么是首选,原因是什么。

更新:限制主体始终为 JSON 类型的用例。绝不是 XML/图像或常规表单数据。各自的优缺点是什么?

最佳答案

你应该使用request.data。它更灵活,涵盖更多用例,并且可以根据需要多次访问。引用文档:

关于 request.data

REST framework introduces a Request object that extends the regularHttpRequest, and provides more flexible request parsing. The corefunctionality of the Request object is the request.data attribute,which is similar to request.POST, but more useful for working with WebAPIs.

request.POST # Only handles form data. Only works for 'POST' method.

request.data # Handles arbitrary data. Works for 'POST', 'PUT' and'PATCH' methods.

关于request.body

The raw HTTP request body as a byte string. This is useful forprocessing data in different ways than conventional HTML forms: binaryimages, XML payload etc. For processing conventional form data, useHttpRequest.POST.

因此,除非您想处理二进制图像或 XML 负载,否则永远不要使用 request.body,它只是一个包含请求正文的简单字符串。始终使用 request.data,它是完全解析的正文(即 Python dict),处理起来更方便。

关于python - DRF 中的 request.data 与 Django 中的 request.body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36616309/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com