Как вызвать несколько API и отобразить ответ всех этих API в шаблоне в django
Я пробовал выводить ответ нескольких API в одном шаблоне, но поскольку в пути можно передать только одно представление, я не могу придумать, что можно сделать
Я попытался сохранить две функции для вызова API внутри класса, но получил ошибку GET 405
Чтобы вызвать несколько API и отобразить ответ всех этих API в шаблоне в Django, вы можете создать функцию представления, которая выполняет вызовы API и передает данные ответа шаблону в качестве контекста.
Вот пример того, как это можно сделать, используя модуль requests
для выполнения вызовов API:
from django.shortcuts import render
import requests
def view_function(request):
# Make the first API call
response1 = requests.get('https://api.example.com/endpoint1')
data1 = response1.json()
# Make the second API call
response2 = requests.get('https://api.example.com/endpoint2')
data2 = response2.json()
# Make the third API call
response3 = requests.get('https://api.example.com/endpoint3')
data3 = response3.json()
# Render the template and pass the API response data as context
return render(request, 'template.html', {
'data1': data1,
'data2': data2,
'data3': data3,
})
В данном примере view_function
- это функция представления, которая выполняет вызовы API и отображает шаблон. Функция requests.get
используется для выполнения вызовов API, а метод response.json
используется для разбора ответа JSON от API. Функция render
используется для рендеринга шаблона и передачи данных ответа API в качестве контекста шаблону.
В шаблоне вы можете получить доступ к данным ответа API с помощью контекстных переменных, которые вы передали в шаблон. Например, вы можете получить доступ к данным первого вызова API, используя {{ data1 }}, и к данным второго вызова API, используя {{ data2 }}.
Прежде всего, я не могу ничего сказать, не видя кода, но я думаю, что вы можете создать словарь и передать его в качестве контекста в ответ. Сохраните несколько api и передайте их в словарь
mydict = {
"api1":api_data,
"api2":api_data,
}
передайте это как контекст в ответ