【问题标题】:{"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"}{"detail":"JSON 解析错误 - 预期值:第 1 行第 1 列 (char 0)"}
【发布时间】:2021-03-25 14:43:37
【问题描述】:

我不断收到 {"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"} 错误。我打印它正在接收的 json,它似乎是正确的 {'order_package': {'package': 1, 'package_quantity': 1}}

这是我认为相关的所有代码。

发布方式:

@permission_classes((AllowAny,))
def post(self, request):
    print(request.data)
    data = JSONParser().parse(request)
    serializer = serializers.CartSerializer(data=data)

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=200)
    else:
        return Response.status_code(500)

购物车型号:

class Cart(models.Model):
  order_package = models.ForeignKey(OrderPackage, on_delete=models.CASCADE, null=True, blank=True)
  order_item = models.ForeignKey(OrderItem, on_delete=models.CASCADE, null=True, blank=True) 

以及订单包:

class OrderPackage(models.Model):
  package = models.ForeignKey(Package, on_delete=models.CASCADE)
  package_quantity = models.IntegerField() 

我还尝试不使用 json 解析器并将 request.data 直接传递到序列化程序中的 data= 中,这会产生相同的错误。任何帮助表示赞赏。

控制台:

{'order_package': {'package': 1, 'package_quantity': 1}}
Bad Request: /api/restaurants/addtocart
[17/Dec/2020 08:54:03] "POST /api/restaurants/addtocart HTTP/1.1" 400 73

【问题讨论】:

  • JSON 需要双引号 " 而不是单引号 '
  • @LucaAngioloni 我也试过用双引号。同样的错误
  • 另外:data = JSONParser().parse(request.data) 否则你解析的不是 JSON,而是整个请求。
  • @Rayyan 你的意思是 print(request.data) 行吗?它返回 {'order_package': {'package': 1, 'package_quantity': 1}} 我在问题中有它
  • @Yousef 你试过了吗:serializer = serializers.CartSerializer(data=request.data) 直接?

标签: python django django-models django-rest-framework django-views


【解决方案1】:

你试过这段代码就可以解决你的错误

def post(self, request):
    print(request.data)
    serializer = serializers.CartSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=200)
    else:
        return Response.status_code(500)

【讨论】:

猜你喜欢
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
相关资源
最近更新 更多