Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

SpriteSpirit/python-weather-web

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Weather Web Application

Веб-приложение для получения прогноза погоды по названию города.


Оглавление


Описание проекта

Это веб-приложение позволяет получать прогноз погоды по введённому названию города. Приложение выводит данные о погоде в удобном формате:

  • Прогноз на сегодня.
  • Прогноз на 3 дня вперёд.

При вводе города реализовано автодополнение с помощью Яндекс.Геосаджеста, что упрощает выбор нужного города. Также в приложении сохраняется история поисковых запросов, и при повторном посещении сайта пользователю предлагается посмотреть погоду в последнем искомом городе.

Кроме веб-интерфейса, реализован API-эндпоинт /api/stats/ для отображения статистики поисковых запросов (какой город сколько раз искали), отсортированной по популярности.


Реализованный функционал

  • Основной функционал:

    • Ввод названия города.
    • Получение прогноза погоды.
  • Достоверное отображение прогноза:

    • Прогноз на сегодня.
    • Прогноз на 3 дня вперёд.
  • Тестирование:

    • Написаны тесты для views и services с использованием pytest и mock.
  • Контейнеризация:

    • Приложение полностью обернуто в Docker-контейнеры (web, db).
  • Автодополнение:

    • Реализовано подсказки при вводе города с помощью Яндекс.Геосаджеста.
  • Сессии 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

Запуск с помощью Docker

  1. Клонируйте репозиторий:

    git clone <your-repo-url>
    cd weather_project
  2. Создайте файл .env:

    cp example.env .env
  3. Заполните .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
  4. Сборка и запуск контейнеров:

    docker-compose up --build -d
  5. Применение миграций:

    docker-compose exec web python manage.py migrate

После выполнения этих шагов приложение будет доступно по адресу: http://localhost:8000
API статистики будет работать по адресу: http://localhost:8000/api/stats/


Тестирование и линтинг

Запуск тестов

docker-compose exec web pytest

Что тестируется:

  • Корректность работы с API Яндекса (с моками запросов).
  • Сохранение истории поиска.
  • Логика сессий (последний город).
  • Формат ответа API статистики.

Проверка стиля кода (Ruff)

docker-compose exec web ruff check .

Автоисправление ошибок с помощью Ruff:

docker-compose exec web ruff check --fix .

Наслаждайтесь использованием Weather Web Application!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.