parse()函数缺少一个必需的位置参数:'stream'。

5

目前,我想在 Django 中使用 REST API 渲染数据,但我收到了以下错误:

parse() 缺少 1 个必需的位置参数:'stream'

有什么解决方案吗?

@csrf_exempt
def article_key_list(request,pk):
    try:
        article = Article.objects.get(pk=pk)
    except Article.DoesNotExist:
        return HttpResponse(status=404)
    if request.method == 'GET':
        serial = Article_serializer(article)
        return JsonResponse(serial.data)

    elif request.method == 'PUT':
        data = JSONParser.parse(request)
        serial = Article_serializer(data=data)
        if serial.is_valid():
            serial.save()
            return JsonResponse(serial.data,status=201)
        return JsonResponse(serial.errors,status=404)

    elif request.method == 'DELETE':
        article.delete()
        return HttpResponse(status=204)

你能澄清一下你的问题吗? - damaredayo
1
请参阅解析器文档 https://www.django-rest-framework.org/api-guide/parsers/: "要实现自定义解析器,您应该覆盖BaseParser,设置.media_type属性,并实现.parse(self, stream, media_type, parser_context)方法。该方法应返回将用于填充request.data属性的数据。传递给.parse()的参数是:..." - maschu
1个回答

10

你应该写:

JSONParser().parse(request) 

替代方案:

JSONParser.parse(request)

救命稻草!给这个人鸣响掌声! - CloudyGoat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接