Solved: {“non_field_errors”: [“Expected a list of items but got type \”dict\”.”]}

When we were working with Django rest framework and trying to design a response JSON, we got the following error when tried to push the JSON using http POST.

{"non_field_errors": ["Expected a list of items but got type \"dict\"."]}

This error was occurring because we tried to push single JSON object, but in code we had written as “many=True”, in views.py

 def post(self, request, format=None):
    serializer = UserSerializer(data=request.data, many=True)
    if serializer.is_valid():
       serializer.save()
       return JsonResponse(serializer.data, status=status.HTTP_201_CREATED)

Solution : change views.py to remove “many=True” while getting serializer

def post(self, request, format=None):
    serializer = UserSerializer(data=request.data)
    if serializer.is_valid():
       serializer.save()
       return JsonResponse(serializer.data, status=status.HTTP_201_CREATED)

Leave a Comment