【发布时间】: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