Как отобразить данные из 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 }}
Вернуться на верх