【发布时间】:2019-08-21 16:36:44
【问题描述】:
我正在使用 django-restframework,我使用邮递员 POST json 数据到我的项目,但我得到了类似标题的错误,我设置了 raw 和 application/json 这里是邮递员的代码。
POST /account/post/reply/ HTTP/1.1
Host: localhost:8000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: a0c7bd93-631e-4c7a-8106-87f018eaf7da
{
"user": "michael",
"userid": "1",
"ihelpid": 6,
"tittle": "6",
"info": "6",
"label": "3",
"tel": "dxy970525",
"picture1": null,
"picture2": null
}
我的代码真的很简单,就像:
from rest_framework.parsers import JSONParser,ParseError
class ReplyViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list` and `detail` actions.
"""
pagination_class=PageNumberPagination
queryset = Forum_reply.objects.all()
serializer_class = ReplySerializer
#filter
filter_backends = (DjangoFilterBackend, )
filter_fields = ['postID',]
def create(self, request, *args, **kwargs):
print(request.data)
data = JSONParser().parse(request)
return HttpResponse("ok")
使用视图集后出现这个错误,我已经在shell上打印了,但没有问题
【问题讨论】:
-
嘿,你能通过检查变量
request是什么来调试吗?如果request是 JSON 字符串,JSONParser 应该可以工作。在这种情况下似乎不是这样。 -
您应该改用
parser_classes = (JSONParser,)(谷歌搜索)。这会自动为你解析请求数据,所以你可以在request.data访问它 -
如果我打印请求,我会收到
<rest_framework.request.Request object at 0x7f03c01a1470> -
想告诉我打印请求而不是 request.data..
-
请检查您发送请求的功能。我遇到了同样的问题,我通过将 this.http.delete(this.APIUrl + '/website', val) 更改为 this.http.delete(this.APIUrl + '/website',{body:val}) 解决了它.
标签: json django python-3.x django-rest-framework