#python #json #django #dictionary #django-rest-framework
#питон #json #джанго #словарь #django-rest-фреймворк
Вопрос:
Я пытаюсь упаковать данные моего API в один запрос GET, просто используя стандартные библиотеки python.
class GetData(APIView):
def get(self, request, *args, **kwargs):
urls = [url_1,
url_2,
url_3,
url_4
]
data_bundle = []
for x in urls:
response = requests.get(x, headers={'Content-Type': 'application/json'}).json()
data_bundle.append(response)
return Response(data_bundle, status=status.HTTP_200_OK)
Возвращаемый ответ должен быть данными JSON, я пытаюсь заставить его работать, но кажется, что данные ответа, похоже, перекрывают друг друга? Как я могу правильно создать JSON-словарь словарей.
Я попытался переключиться data_bundle
на пустой словарь вместо списка. Однако это просто вызвало ошибку, говорящую:
ValueError: dictionary update sequence element #0 has length 8; 2 is required
Есть ли простой способ добиться этого, которого мне не хватает? Спасибо вам за помощь.
Комментарии:
1. Можете ли вы привести пример того, как выглядят данные, которые вы получаете, и как бы вы хотели, чтобы они выглядели?
Ответ №1:
class GetData(APIView):
def get(self, request, *args, **kwargs):
urls = [url_1,
url_2,
url_3,
url_4
]
data_bundle = []
for x in urls:
response = requests.get(x, headers={'Content-Type': 'application/json'}).json()
data_bundle.append(response)
return Response(data_bundle, status=status.HTTP_200_OK)
возможно, это поможет не использовать return в теле цикла for. И данные не будут переопределять друг друга
Комментарии:
1. Ах да, такая глупая ошибка, спасибо, что помогли мне разобраться, что пошло не так.