Python requests.json() возвращает строку, вместо json
Почему json() возвращает мне строку? Какой от него вообще тогда смысл? Разве он не должен возвращать объект json?
url = 'http://127.0.0.1:8000/bots/dialogs/get/bots/tokens'
x = requests.post(url).json()
print(x) # [{"model": "bot_manager.bot", "token": 13}, {"model": "bot_manager.bot", "token": 13444}, ]
print(type(x)) # <class 'str'>
Ответ на post-запрос
data = serializers.serialize("json", Bot.objects.all())
return JsonResponse(data, safe=False)
Ответы (1 шт):
Автор решения: Viewed
→ Ссылка
На основе поста, предложенного в комментариях.
JsonResponse берет dict и возвращает json-строку для передачи в запросах.
В вашем случае, вы даете JsonResponse уже json-строку и за счет safe=False не получаете ошибку об этом.
TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False
Измените ответ на post-запрос, например, следующим способом
data = serializers.serialize("json", Bot.objects.all())
return HttpResponse(data, content_type='application/json')
Возможно это не сработает, поскольку я не знаком с django. Но причина выдачи строки вместо json-формата очевидна.