【问题标题】:Invalid data. Expected a dictionary, but got bytes无效数据。需要一本字典,但得到了字节
【发布时间】:2019-05-29 07:25:52
【问题描述】:

当我请求保存 API 时,我收到了这个错误: { “non_field_errors”:[ “无效数据。需要字典,但得到了字节。” ] }

models.py

from django.db import models

# Create your models here.
class employee(models.Model):
    name=models.CharField(max_length=10)
    surname=models.CharField(max_length=10)
    emo_id=models.IntegerField()

    class Meta:  
        db_table = "employee" 

    def __str__(self):
        return self.name

serializer.py
from rest_framework import serializers
from .models import employee

class convertSerializers(serializers.ModelSerializer):
    class Meta:
        model = employee
        fields = '__all__' # for all field

views.py

def saveEmployee(request):
    serializer = convertSerializers(data=request.body)
    print(serializer)
    if request.method == 'POST':
        if serializer.is_valid():
            serializer.save()
            return JsonResponse('saved successfull', safe=False)
        return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

【问题讨论】:

    标签: django-rest-framework


    【解决方案1】:

    由于您使用的是 DRF,因此您可以使用 request.data 代替 request.body

    from rest_framework.decorators import api_view
    from rest_framework.response import Response
    
    
    @api_view(['POST'])
    def saveEmployee(request):
        serializer = convertSerializers(data=request.data)
        serializer.is_valid(True)
        serializer.save()
        return Response('saved successful')

    【讨论】:

    • 能否请您说出为什么我的代码有错误:有什么不同?我根据训练电影写的代码,我不知道为什么会出错!!!
    • 你被request.body使用了,不应该
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2021-07-20
    • 1970-01-01
    • 2021-07-03
    • 2021-06-03
    • 2021-01-22
    相关资源
    最近更新 更多