【发布时间】: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 对象)放在这里,它已经可以更好地工作了 -
或者,使用 FormParser (django-rest-framework.org/api-guide/parsers/#formparser)
标签: python django django-rest-framework