0

Im new to the Django Rest Framework i think i did the serializer thing and views correctly, and it looks like this:

class MyAnimalSerializer(serializers.ModelSerializer): class Meta: model = MyAnimal fields = ('id', 'user', 'name', 'animal', 'race', 'birthyear', 'color', 'sex', 'height', 'father', 'mother', 'doc_num',) 
class MyAnimalFormApi(APIView): permission_classes = (AllowAny,) def post(self, request): serializer = MyAnimalSerializer(data=request.data, many=True) if serializer.is_valid(): serializer.save() return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK) else: return Response({"status": "error", "data": serializer.errors}, status=status.HTTP_400_BAD_REQUEST) 

Now when i try to test it with Postman

{ "data": { "name": "name", "animal": "dog"}, } 

i get { "detail": "JSON parse error - Expecting property name enclosed in double quotes: line 1 column 47 (char 46)" }

but it is enclosed in double quotes. Do you have any idea what's wrong or how to make it accessible only via {"name": "", "animal": ""} instead of nesting dictionary?

0

2 Answers 2

1

Remove the trailing comma.

>>> json.loads('{ "data": { "name": "name", "animal": "dog"}, }') ... JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 47 (char 46) 

Should be this instead.

{ "data": { "name": "name", "animal": "dog"} } 
>>> json.loads('{ "data": { "name": "name", "animal": "dog"} }') {'data': {'name': 'name', 'animal': 'dog'}} 
Sign up to request clarification or add additional context in comments.

Comments

0

The reason you get this error i believe, is because you need to dump the json data before you send it in your request.

data = json.dumps(payload) 

Where payload is your data dictionary. This will convert it into a string.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.