Как стать автором
Обновить

Разработка сайта погоды на питоне

Уровень сложностиПростой

Привет, друзья! Сегодня хочу рассказать, как я создал свой небольшой, но любимый сайт о погоде. Хотя он далеко не самый крупный в этой области, для меня это проект, который я с гордостью развиваю и в который вложил немало усилий, а еще много нового узнал. И самое приятное — сайт действительно помогает людям.

Вот сам сайт: pogoda-free.ru

Зачем вообще нужен сайт погоды? Создание еще одного сайта погоды может показаться странным в мире, где уже существует масса подобных сервисов. Но у меня были свои причины для этого:

  • Обучение: Это был отличный способ улучшить свои навыки в Python, Django и веб-разработке в целом.

  • Персонализация: Я хотел создать сайт, который бы отвечал моим собственным потребностям и имел те функции, которых мне не хватало в других сервисах.

  • Просто хобби: Мне было интересно узнать, смогу ли я создать такой проект!

Технологии и инструменты:

  • Python: Основной язык программирования. Он простой, мощный и имеет огромное количество библиотек.

  • Django: Отличный фреймворк для Python, который помог ускорить разработку и организовать проект.

  • Openweathermap API: Бесплатный (с ограничениями) и надежный источник данных о погоде.(минусы: не предоставляет архивные данные погоды в беспл версии, прогноз максимум на 5 дней, прогноз каждые 3 часа, в платной версии каждый час)

  • IPinfo API: Для определения местоположения пользователя по его IP (до 50 000 бесплатных запросов в месяц).

  • HTML/CSS/JavaScript: Необходимы для создания пользовательского интерфейса (честно признаюсь, шаблон страницы мне помог написать ChatGPT с официального сайта OpenAI, через VPN, без ограничений по количеству запросов).

  • PostgreSQL: Масштабируемая база данных для хранения данных о погоде. Для тестирования использовал SQLite3, но для продакшн-версии она не подходит.

  • Gunicorn и Nginx: Используются для развертывания и обеспечения стабильной работы сайта. Nginx также помогает определять IP-адрес пользователя.

Проектирование и планирование: Перед тем как начать писать код, важно было спланировать ключевые функции, которые я хотел бы видеть на сайте:

  • Отображение текущей погоды: температура, осадки, влажность, давление, ветер и ощущаемая температура.

  • Автоматическое определение местоположения: чтобы пользователь сразу видел погоду в своем городе и ему не приходилось вводить город вручную.

  • Прогноз на несколько дней: для удобства планирования.

  • Поиск по городу: чтобы можно было узнать погоду в любом другом месте.

  • Интуитивно понятный интерфейс: сайт должен быть удобным для пользователей, особенно с мобильной версии.

В будущем хочу добавить функцию «Во что сегодня одеться». Это будет кнопка, которая, при нажатии, покажет, какую одежду лучше выбрать, основываясь на текущей температуре, ветре и других факторах. Также планирую интегрировать API ChatGPT для реализации этого.

Вот как выглядит сайт на мобильной версии днем:

А вот так — ближе к ночи:

Получение данных через API:

  • Данные от OpenWeatherMap загружаются очень быстро, что положительно влияет на скорость страницы и SEO.

  • Данные от IPinfo немного задерживаются, но в целом скорость вполне приемлемая.

Вот как работает обработка данных: Когда пользователь заходит на сайт, Nginx сначала определяет его IP-адрес. Затем этот адрес используется для запроса в API IPinfo, который возвращает координаты города. Эти координаты передаются в OpenWeatherMap, который генерирует информацию о погоде и отображает её на сайте.

Посещаемость: На данный момент сайт посещают около 100 человек в день. Это не так много, но сайт существует всего неделю, и я считаю это хорошим стартом. В дальнейшем хочу добавить прогнозы для крупных городов на главной странице, чтобы пользователи могли увидеть погоду без необходимости вводить город.

На данный день 171 человек, но время обеда только
На данный день 171 человек, но время обеда только

Надеюсь, эта статья вдохновит вас на создание собственных проектов. Даже маленький сайт, как этот, может приносить пользу людям и радовать своего создателя. Главное — не бояться начинать и постоянно учиться новому!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.