Создание погодного приложения на Python Django
В ходе урока вы создадите полноценное приложение на Python и Django. Программа будет получать информацию про погодные условия в различных городах мира. Все значения будут храниться в базе данных.
Видеоурок
Полезные ссылки:
- API для погоды ;
- Официальный сайт Django ;
- Большой курс по Python ;
- Модуль requests .
В ходе урока была создана программа, которая получает данные от пользователя и отображает погоду в заданном городе.
Пишем программу погоды
Итак, давайте напишем консольную программу, которая будет показывать текущую погоду по нашим координатам. Чтоб не по IP-адресу как-то пытаться неточно вычислять местоположение, а именно по текущим реальным GPS-координатам. Чтобы программа показывала температуру за бортом, идёт ли там дождь/снег и время восхода-заката солнца. Для съёмки видео важно понимать, во сколько сегодня восход или закат солнца, чтобы ориентироваться на освещённость за окном.
Итак, в первую очередь, нам надо понять, как получить доступ к текущим координатам, есть ли такая возможность. Решение будет для MacBook, гуглим: python mac get gps coordinates . Первая ссылка говорит о программе whereami, которая печатает текущие координаты в консоль
whereami
Отлично, теперь мы можем получать наши текущие координаты, отправить их в какой-то сервис погоды через API, получить оттуда погоду и отобразить её.
Команда работает по аналогии с whoami — та показывает, «кто я», а вот команда whereami показывает, «где я»:).
Давайте найдём какой-то сервис погоды. Поисковый запрос API прогноз погоды привёл меня на проект OpenWeather. У них есть бесплатный доступ. Еще есть Яндекс погода в России, Gismeteo, но там, насколько я понял, для получения API-ключа надо куда-то писать на почту, для наших целей это слишком долго. Воспользуемся OpenWeather.
Запрос на получение погоды по примерно моим координатам:
http https://api.openweathermap.org/data/2.5/weather\?lat\=55.7\&lon\=37.5\&appid\=7549b3ff11a7b2f3cd25b56d21c83c6a\&lang\=ru\&units\=metric
httpie — это удобная утилита работы с веб-сервисами, такая вариация на тему curl , можно установить на Mac OS с помощью brew командой brew install httpie . Она выводит в раскрашенном виде JSON, например, что удобно.
API-ключ, использующийся в запросе, получается сразу после регистрации, но активируется в течение, может быть, минут десяти.
< "base": "stations", "clouds": < "all": 61 >, "cod": 200, "coord": < "lat": 55.7, "lon": 37.5 >, "dt": 1651521003, "id": 529334, "main": < "feels_like": 9.26, "grnd_level": 993, "humidity": 74, "pressure": 1013, "sea_level": 1013, "temp": 10.25, "temp_max": 12.01, "temp_min": 8.55 >, "name": "Moscow", "sys": < "country": "RU", "id": 47754, "sunrise": 1651455877, "sunset": 1651511306, "type": 2 >, "timezone": 10800, "visibility": 10000, "weather": [ < "description": "облачно с прояснениями", "icon": "04n", "id": 803, "main": "Clouds" > ], "wind": < "deg": 180, "gust": 8.08, "speed": 2.69 >>
Так, отлично, мы умеем находить текущие координаты и умеем по ним получать температуру, состояние погоды — дождь/снег/облака, а также получать время восхода и заката солнца.
Давайте напишем программу для этого! Чтобы запускаешь её и она писала наше местоположение и выводила эти данные — температуру, характеристику погоды (снег/облака/туман) и время восхода заката солнца.
Создайте приложение погоды на Python с помощью Django: пошаговое руководство

TLDR В видео показано, как создать погодное приложение на Python с использованием Django, Jinga и OpenWeatherMap API, а также как отобразить данные о погоде для города в HTML-шаблоне.
Summarize any YouTube video Summarize any video by yourself
Install on Chrome
Ключевые выводы
Для создания погодного приложения с использованием Django и Python требуется текстовый редактор, библиотеки Python и Jinja, а также API с такого сайта, как openweathermap.
Использование шаблонов bootstrap может упростить процесс создания погодного приложения на Django.
Объект jason содержит все данные о погоде в определенном городе, которые могут быть использованы для отображения погоды в определенном уголке конкретного города в HTML-шаблоне.
Отображение значков температуры и соответствующих им температур является важным аспектом создания погодного приложения на Django.
У программы есть потенциал для отслеживания погоды в нескольких городах с помощью планшета и администратора, что потенциально расширяет ее полезность за пределы простого отображения погоды в одном городе.
Класс input text в Django позволяет добавлять атрибуты к полям формы.
Просмотреть больше Компьютерная наука
Отмеченное временем резюме
Создайте погодное приложение на Python, используя Jinga и OpenWeatherMap API в рамках проекта Django, зарегистрируйте его в settings.py , и создайте суперпользователя для доступа администратора.
Создайте индекс функции, используя импорт представлений, и подключите файл buse, работайте над «index.html » в новой папке «боюсь плавать к Рите» в папке шаблонов спикер объясняет HTML-код для приложения weather на русском языке, добавляет шаблон Bootstrap и настраивает заголовок.
Зарегистрируйтесь в учетной записи OpenWeather, используйте классы Bootstrap для создания макета веб-сайта о погоде и используйте Django и модуль запроса для доступа и получения данных о погоде в формате JSON.
Получите данные о погоде для города в градусах Цельсия и отобразите их в HTML-шаблоне, используя словарь с определенными ключами.
Программа успешно отображает данные о погоде для города и планирует внедрить отслеживание для нескольких городов с помощью нового планшета.
В коде отображается название города, температура и значок температуры, ошибки помогают разобраться в технологии, указать название города для передачи данных, страница работает после перезагрузки, создать файл «формы» для работы с формой.
Чтобы добавить поле города в форму, сохранить его в базе данных и отобразить на веб-странице, выполните действия, описанные в лекции.
Пишем свой прогноз погоды на Python
У Практикума появился новый бесплатный мини-курс — «Прогноз погоды на Python за час». Мы посмотрели, как он работает, и решили повторить это у себя в статье — как обычно, с комментариями и разбором. При этом на курсе всё удобнее — там в тренажёре можно сразу увидеть результат и получить совет, как исправить ошибки, если они появятся.
Можете сейчас пролистать статью, а потом пойти потренироваться в Практикуме. У них написано, что это приключение на час, но описанная в этой статье часть займёт минут пятнадцать. Вводить данные карты не нужно. Выглядит так:

Что делаем
Пишем скрипт, который покажет погоду в выбранном городе. Для этого мы:
- Подключаемся к службе погоды OpenWeather.
- Выбираем город.
- Получаем текущую температуру воздуха в этом городе и то, как она ощущается.
- Выводим результаты на экран.
На деле это проще, чем кажется, — за нас всю работу сделает API службы погоды, а мы только получим и обработаем результаты.
Для работы нам понадобится Python. Если будете делать проект без тренажёра Практикума, вам потребуется среда разработки. Прочитайте, как установить Python на компьютер и начать на нём писать.
Если будете делать в тренажёре Практикума, там среда уже настроена, можно просто делать без установки.
Подключаемся к службе погоды
Чтобы скрипт мог отправлять запросы к другим серверам, нам понадобится библиотека requests . Если вы делаете всё в тренажёре Практикума, эта библиотека уже установлена. А для установки её на свой компьютер нужно открыть терминал и выполнить такую команду:
pip install requests
После установки мы сразу можем подключить библиотеку к своему скрипту. Это уже пишем в коде, а не в терминале:
С этого момента наша программа будет знать, как отправлять запросы на сервер и получать в ответ новые данные. Теперь сделаем переменную с городом, погоду в котором нам интересно узнать:
Город в переменной может стоять любой — Москва, Брянск, Тула, Воронеж или что угодно ещё. Главное, чтобы о нём знала служба погоды OpenWeather.
Перед тем как отправить запрос, нам нужно его сформировать: подготовить специальную строку, которую сервер сможет обработать, чтобы вернуть нам данные о погоде. Она будет состоять из трёх частей:
- Адреса сервера, к которому мы отправляем запрос → https://api.openweathermap.org/data/2.5/weather
- Города, температуру в котором нам интересно узнать → он лежит в переменной city
- Служебных параметров: единиц измерения и ключа приложения → &units=metric&lang=ru&appid=79d1ca96933b0328e1c7e3e7a26cb347
Собираем всё вместе и кладём результат в переменную url:
url = 'https://api.openweathermap.org/data/2.5/weather?q='+city+'&units=metric&lang=ru&appid=79d1ca96933b0328e1c7e3e7a26cb347'
Теперь подробнее про службу погоды.
Служба погоды OpenWeather
OpenWeather — это погодный сервис, который собирает данные о погоде в городах со всего мира. У него есть сайт, на который можно зайти, вбить свой город и узнать погоду на сегодня (на английском):

Но особенность этого сервиса в том, что он ещё умеет отвечать на внешние запросы — такие же, как мы сформировали в скрипте.
Если мы заменим переменную в адресе на конкретный город, а затем вставим эту строку в браузер и перейдём по этому адресу, то получим полную информацию о погоде и расположении этого города:

А вот что нам вернул сервер:
В скрипте мы получим эти же данные, а потом обработаем их, чтобы сразу видеть, как там с погодой, не разбираясь во всех этих числах.
Это JSON. Обратите внимание на строку выше. Это называется JSON — JavaScript Object Notation. Это способ передать структурированные данные от одной программы к другой, используя при этом строку текста. В этой строке зашифрованы объекты, их свойства и значения.
Например, видно, что сначала мы задаём нечто под названием coord (координаты), внутри него лежат две сущности lon и lat — широта и долгота. В каждой из этих сущностей лежат числа. Получается, что мы зашифровали в строке какие-то координаты. Благодаря этой разметке можно вкладывать много сущностей друг в друга и передавать так данные между программами. Читайте подробнее об этом в нашей статье про JSON.
Отправляем запрос и выводим результат
Для отправки запроса в службу погоды используем команду requests.get().json() .
Команда Get() отвечает за сам запрос, а json() разбирает ответ в json-формате на составляющие, с которыми потом будет удобно работать:
После этой команды в переменной weather_data появятся все данные с сервера. Чтобы посмотреть их в удобном виде, используем такие команды:
weather_data_structure = json.dumps(weather_data, indent=2) print(weather_data_structure)

Видно, что данные остались теми же, но стали выглядеть структурированно и понятно. Например, можно заметить, что данные о погоде лежат в разделе main в блоке temp . Используем это, чтобы вывести значение температуры в выбранном городе и то, как она ощущается. Сразу округлим значения функцией round() , чтобы воспринимать градусы было удобнее:
# получаем данные о температуре и о том, как она ощущается temperature = round(weather_data['main']['temp']) temperature_feels = round(weather_data['main']['feels_like']) # выводим значения на экран print('Сейчас в городе', city, str(temperature), '°C') print('Ощущается как', str(temperature_feels), '°C')

Готовый код
# подключаем библиотеку для работы с запросами import requests # указываем город city = 'Сочи' # формируем запрос url = 'https://api.openweathermap.org/data/2.5/weather?q='+city+'&units=metric&lang=ru&appid=79d1ca96933b0328e1c7e3e7a26cb347' # отправляем запрос на сервер и сразу получаем результат weather_data = requests.get(url).json() # получаем данные о температуре и о том, как она ощущается temperature = round(weather_data['main']['temp']) temperature_feels = round(weather_data['main']['feels_like']) # выводим значения на экран print('Сейчас в городе', city, str(temperature), '°C') print('Ощущается как', str(temperature_feels), '°C')
Что дальше
Теперь, когда вы знаете, как выглядит структура данных с ответом от сервера и как получить к ним доступ, вы сможете вывести:
- скорость ветра;
- время рассвета и заката;
- облачность;
- координаты города;
- и много других параметров.
Если хотите разобраться с тем, как работать с такими данными и что ещё можно с ними сделать, — пройдите бесплатный тренажёр «Прогноз погоды на Python за час». Там есть моменты, которые мы не разбирали в статье, — про работу функций и json-форматирование.
Попробуйте бесплатное в «Яндекс Практикуме»
В «Яндекс Практикуме» есть бесплатные курсы, на которых можно получить полезные навыки для работы в ИТ: от Git и Excel до основ Python и облачных технологий.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
