Веб-приложение для получения прогноза погоды по названию города.
- Описание проекта
- Реализованный функционал
- Технологии
- Как запустить проект
- Тестирование и линтинг
- Контакты
Это веб-приложение позволяет получать прогноз погоды по введённому названию города. Приложение выводит данные о погоде в удобном формате:
- Прогноз на сегодня.
- Прогноз на 3 дня вперёд.
При вводе города реализовано автодополнение с помощью Яндекс.Геосаджеста, что упрощает выбор нужного города. Также в приложении сохраняется история поисковых запросов, и при повторном посещении сайта пользователю предлагается посмотреть погоду в последнем искомом городе.
Кроме веб-интерфейса, реализован API-эндпоинт /api/stats/ для отображения статистики поисковых запросов (какой город сколько раз искали), отсортированной по популярности.
-
Основной функционал:
- Ввод названия города.
- Получение прогноза погоды.
-
Достоверное отображение прогноза:
- Прогноз на сегодня.
- Прогноз на 3 дня вперёд.
-
Тестирование:
- Написаны тесты для
viewsиservicesс использованиемpytestиmock.
- Написаны тесты для
-
Контейнеризация:
- Приложение полностью обернуто в Docker-контейнеры (
web,db).
- Приложение полностью обернуто в Docker-контейнеры (
-
Автодополнение:
- Реализовано подсказки при вводе города с помощью Яндекс.Геосаджеста.
-
Сессии Django:
- При повторном посещении сайта предлагается посмотреть погоду в последнем искомом городе.
-
История поиска:
- Сохраняется общая история поиска городов.
-
API статистики:
- Эндпоинт
/api/stats/показывает статистику поисковых запросов.
- Эндпоинт
- Backend: Python, Django, Django REST Framework
- База данных: PostgreSQL
- Frontend: HTML, CSS, JavaScript (используется API Яндекс.Карт)
- API погоды:
- Яндекс.Погода
- Яндекс.Геокодер
- Яндекс.Геосаджест
- Тестирование: Pytest, pytest-django, Mock
- Линтинг и форматирование: Ruff
- Контейнеризация: Docker, Docker Compose
- Менеджер пакетов: uv
- Docker
- Docker Compose
-
Клонируйте репозиторий:
git clone <your-repo-url> cd weather_project
-
Создайте файл
.env:cp example.env .env
-
Заполните
.envсвоими данными:DJANGO_SECRET_KEY='your-django-secret-key' YANDEX_API_KEY='your-yandex-api-key-for-weather-and-geocoder' YANDEX_JS_API_KEY='your-yandex-js-api-key-for-suggest' # PostgreSQL POSTGRES_DB=weather_db POSTGRES_USER=weather_user POSTGRES_PASSWORD=strongpassword POSTGRES_HOST=db POSTGRES_PORT=5432
-
Сборка и запуск контейнеров:
docker-compose up --build -d
-
Применение миграций:
docker-compose exec web python manage.py migrate
После выполнения этих шагов приложение будет доступно по адресу: http://localhost:8000
API статистики будет работать по адресу: http://localhost:8000/api/stats/
docker-compose exec web pytestЧто тестируется:
- Корректность работы с API Яндекса (с моками запросов).
- Сохранение истории поиска.
- Логика сессий (последний город).
- Формат ответа API статистики.
docker-compose exec web ruff check .docker-compose exec web ruff check --fix .Наслаждайтесь использованием Weather Web Application!