【问题标题】:Getting rest_framework.exceptions.ParseError: JSON parse error - 'utf-8' codec can't decode byte 0xff in position 260: invalid start byte获取 rest_framework.exceptions.ParseError:JSON 解析错误 - 'utf-8' 编解码器无法解码位置 260 中的字节 0xff:无效的起始字节
【发布时间】:2022-06-13 20:29:25
【问题描述】:

我正在使用 django rest 框架构建一个 rest api。我正在通过邮递员发出一个 post 请求并将正文作为表单数据传递,如下图所示:

views.py 文件中的代码是:

def addItem(request):
    if request.method == "POST":
        items = request.body
        itemStream = io.BytesIO(items)
        dataItems = JSONParser().parse(itemStream)
        serializedData = MenuSerializer(data=dataItems)
        if serializedData.is_valid():
            serializedData.save()
            responseMessage={'message':"Items added successfully"}
            return JsonResponse(responseMessage)
        json_data=JSONRenderer().render(serializedData.error)
        return HttpResponse(json_data,content_type='application/json')

serializer.py 的代码是:

from dataclasses import fields
from .models import Menu
from rest_framework import serializers

class MenuSerializer(serializers.ModelSerializer):
    class Meta:
        model = Menu
        fields = '__all__'
    
    def create(self,validated_data):
        return Menu.objects.create(**validated_data)

models.py文件代码为:

class Menu(models.Model):
    item_name = models.CharField(max_length=20)
    image = models.ImageField(upload_to="media")
    category = models.CharField(max_length=20)
    price = models.IntegerField()
    discount = models.IntegerField()
    plate_size = models.IntegerField()

【问题讨论】:

  • 您知道原始输入数据是什么样的吗?如果是这样,您可以转到导致错误的字符号 260。作为一个疯狂的猜测,我会说你图像中的二进制数据把事情搞砸了。
  • 根据您的屏幕截图,您将数据作为表单数据发送,而不是 JSON。如果您使用 raw 并将您的数据以 JSON 格式(作为 JSON 对象)放在这里,它已经可以更好地工作了

标签: python django django-rest-framework


【解决方案1】:

您选择了表单数据,因此 request.body 中收到的数据不在 键值格式。您可以通过在终端中打印项目来查看。

选择raw并在下拉列表中选择json,如下图: Step1

然后将要插入的json数据写入给定的编辑器,如下所示。 enter image description here

然后点击发送。 注意:我采用了不同的 json

【讨论】:

    猜你喜欢
    • 2022-11-06
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2016-05-13
    • 2018-03-14
    • 2023-04-02
    相关资源
    最近更新 更多