【问题标题】:parse() missing 1 required positional argument: 'stream'parse() 缺少 1 个必需的位置参数:'stream'
【发布时间】:2020-03-12 16:50:41
【问题描述】:

目前,我想在 django 中使用 REST API 呈现数据,但出现以下错误:

parse() missing 1 required positional argument: '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)

【问题讨论】:

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

标签: python-3.x django-rest-framework django-views


【解决方案1】:

你应该写:

JSONParser().parse(request) 

代替:

JSONParser.parse(request)

【讨论】:

  • 救命!给这个人一个铃铛!
猜你喜欢
  • 2021-08-05
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 2017-03-27
  • 2019-11-12
  • 2019-12-23
相关资源
最近更新 更多