Проблема тестирования Api с помощью Json

Я новичок в Django Rest Framework, я думаю, что я правильно сделал сериализатор и представления, и это выглядит следующим образом:

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)

Теперь, когда я пытаюсь проверить его с помощью Postman

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

i get { "detail": "Ошибка разбора JSON - ожидание имени свойства, заключенного в двойные кавычки: строка 1 столбец 47 (char 46)" }

но он заключен в двойные кавычки. Есть ли у вас идеи, что не так или как сделать его доступным только через {"name": "", "animal": ""} вместо вложенного словаря?

Уберите запятую после запятой.

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

Вместо этого должно быть вот это.

{ "data": { "name": "name", "animal": "dog"} }
>>> json.loads('{ "data": { "name": "name", "animal": "dog"} }')
{'data': {'name': 'name', 'animal': 'dog'}}

Причина, по которой вы получаете эту ошибку, я полагаю, заключается в том, что вам нужно сбросить данные json перед отправкой их в запрос.

data = json.dumps(payload)

Где полезная нагрузка - это ваш словарь данных. Это преобразует его в строку.

Вернуться на верх