Как я могу объединить свои данные JSON API в один словарь?

#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. Ах да, такая глупая ошибка, спасибо, что помогли мне разобраться, что пошло не так.