Как отобразить данные из api json для django
Я пытаюсь создать сайт о погоде на django, но не знаю, как именно получить данные apis и отобразить их в своих шаблонах.
Следуя учебнику, я пришел к такому виду:
from django.http import HttpResponse
import requests
def weatherdata(request):
response = requests.get('https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&hourly=temperature_2m,relative_humidity_2m,precipitation').json()
context = {'response':response}
return render(request,'home.html',context)
и этот html:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<strong>LATITUDE AND LONGITUDE</strong>
{{latitude}} {{longitude}}
</body>
</html>
учитывая следующие строки в api:
{"latitude":52.52,"longitude":13.419998,
и в результате ничего не получили. Ошибки нет, но и на экран не выводится никакой информации
Как мне решить эту проблему?
Похоже, что вы пытаетесь отобразить широту и долготу в своем HTML-шаблоне, но не передали эти значения контексту в представлении. Вам нужно извлечь широту и долготу из ответа API и передать их в контекст.
Вот как можно изменить представление, чтобы включить широту и долготу в контекст:
from django.shortcuts import render
import requests
def weatherdata(request):
response = requests.get('https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&hourly=temperature_2m,relative_humidity_2m,precipitation').json()
latitude = response.get('latitude')
longitude = response.get('longitude')
context = {'latitude': latitude, 'longitude': longitude}
return render(request, 'home.html', context)
Или, поскольку вы начали с передачи всего ответа, вы можете просто получить долготу и широту непосредственно в HTML-шаблоне, как здесь:
{{ response.latitude }} {{ response.longitude }}