Django Rest API POST问题

时间:2015-11-18 16:15:55

标签: python django rest django-rest-framework

我试图在Visual Studio中使用Django REST Framework在Django 1.8中构建一个非常简单的REST API,我希望在其中使用一种服务方法来处理JSON,但我似乎无法理解发帖子:

我试图通过Postman发送这个简单的JSON,就像测试一样:

{
   "foo":"bar"
}
带标题的

Content-Type: application/json

这是我的方法:

@csrf_exempt
@api_view(['POST'])
def test(request):
    data = request.data
    return HttpResponse(status=200)

但我的问题是request.data是空的。如果相反,我尝试访问request.body,我得到

从请求的数据流中读取后,您无法访问正文。

任何想法可能是什么问题?

4 个答案:

答案 0 :(得分:2)

稍微考虑一下,在调试模式下,Visual Studio似乎是一个问题。如果我在调试之前尝试访问请求,然后调用它上面的任何Python函数(例如一个简单的打印,或传入一个函数来解析它),它会显示为一个空的QueryDict,否则它显示正常。

答案 1 :(得分:1)

只是一个猜测:也许这个问题出现在Postman?

尝试发送不带标头的POST请求,但使用原始JSON(不是表单数据):

enter image description here

答案 2 :(得分:1)

这可能有助于Where's my JSON data in my incoming Django request?

除此之外,请确保正确设置了content-type和accept-type。 Postman的原始回应是什么?安全设置是否正确?

答案 3 :(得分:0)

使用POSTMAN时遇到同样的问题。

Solved and Credit转到https://stackoverflow.com/a/31977373/764592

引用答案:

  

请求有效内容未转换为JSON格式。

     

我在Body中传递我的数据 x-www-form-urlencoded

     

enter image description here

     

您可以在请求标头中使用 Content-Type 作为 application / x-www-form-urlencoded 进行修复。

     

enter image description here