Me Sa
Me Sa

Reputation: 1094

Invalid data. Expected a dictionary, but got bytes

when I request to save API, I got this error: { "non_field_errors": [ "Invalid data. Expected a dictionary, but got bytes." ] }

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)

Upvotes: 0

Views: 3354

Answers (1)

JPG
JPG

Reputation: 88499

Since you're using DRF, you can use request.data instead of 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')

Upvotes: 5

Related Questions