Проблема тестирования 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)
Где полезная нагрузка - это ваш словарь данных. Это преобразует его в строку.