Django "KeyError at "
Я изучаю Python / Django и делаю это погодное приложение с API с помощью учебника YouTube, но когда я ввожу название города, я получаю ошибку. Я даже скопировал весь код учебника с GitHub, но все равно получил ту же ошибку, и это просто сводит меня с ума.
Я всегда получаю ошибку на этих 2 строках:
weather_data1, daily_forecasts1 = fetch_weather_and_forecast(city1, api_key, current_weather_url, forecast_url)
и
for daily_data in forecast_response['daily'][:5]:
from django.shortcuts import render
import requests
import datetime
def index(request):
api_key = 'my api'
current_weather_url = 'https://api.openweathermap.org/data/2.5/weather?q={}&appid={}'
forecast_url = 'https://api.openweathermap.org/data/2.5/onecall?lat={}&lon={}&exclude=current,minutely,hourly,alerts&appid={}'
if request.method == 'POST':
city1 = request.POST['city1']
city2 = request.POST.get('city2', None)
weather_data1, daily_forecasts1 = fetch_weather_and_forecast(city1, api_key, current_weather_url, forecast_url)
if city2:
weather_data2, daily_forecasts2 = fetch_weather_and_forecast(city2, api_key, current_weather_url,
forecast_url)
else:
weather_data2, daily_forecasts2 = None, None
context = {
'weather_data1': weather_data1,
'daily_forecasts1': daily_forecasts1,
'weather_data2': weather_data2,
'daily_forecasts2': daily_forecasts2,
}
return render(request, 'weatherApp/index.html', context)
else:
return render(request, 'weatherApp/index.html')
def fetch_weather_and_forecast(city, api_key, current_weather_url, forecast_url):
response = requests.get(current_weather_url.format(city, api_key)).json()
lat, lon = response['coord']['lat'], response['coord']['lon']
forecast_response = requests.get(forecast_url.format(lat, lon, api_key)).json()
weather_data = {
'city': city,
'temperature': round(response['main']['temp'] - 273.15, 2),
'description': response['weather'][0]['description'],
'icon': response['weather'][0]['icon'],
}
daily_forecasts = []
for daily_data in forecast_response['daily'][:5]:
daily_forecasts.append({
'day': datetime.datetime.fromtimestamp(daily_data['dt']).strftime('%A'),
'min_temp': round(daily_data['temp']['min'] - 273.15, 2),
'max_temp': round(daily_data['temp']['max'] - 273.15, 2),
'description': daily_data['weather'][0]['description'],
'icon': daily_data['weather'][0]['icon'],
})
return weather_data, daily_forecasts**your text**
Результат должен дать мне прогноз погоды, но вместо этого я получаю ошибку.