Веб-приложение для просмотра текущей погоды. Пользователь может зарегистрироваться и добавить в коллекцию одну или несколько локаций (городов, сёл, других пунктов), после чего главная страница приложения начинает отображать список локаций с их текущей погодой.
Проект создан в рамках Python Roadmap Сергея Жукова -> ссылка
- Выполните клонирование проекта
git clone https://github.com/Wh4tisl0ve/WeatherApp.git
- Выполните установку Docker
- Создайте .env файл и заполните переменные окружения
Для dev-версии проекта: - Выполните сборку Docker-image
docker build -t weather_project_dev -f .\Dockerfile.dev .
- Выполните команду
docker-compose -f docker-compose.dev.yml up -d --build
Для prod-версии проекта: - Выполните сборку Docker-image
docker build -t weather_project_prod -f .\Dockerfile.prod .
- Выполните команду
docker-compose -f docker-compose.prod.yml up -d --build
- SECRET_KEY=Cекретный ключ для Django
- DEBUG=Режим отладки(0 - выключен, 1 - включен)
- ALLOWED_HOSTS=Список доменов, которые может обслуживать это приложение
- DB_ENGINE=Используемый драйвер для работы с БД
- POSTGRES_DB=Имя БД
- POSTGRES_USER=Имя пользователя от БД
- POSTGRES_PASSWORD=Пароль от БД
- POSTGRES_HOST=Имя контейнера, в котором запущен PostgreSQL
- POSTGRES_PORT=Порт БД
- WEATHER_API_KEY=Уникальный ключ OpenWeatherAPI
- weatherapp/auth - Приложение, отвечающее за аутентификацию пользователя
- weatherapp/sessions - Приложение, отвечающее за работу с сессиями
- weatherapp/users - Приложение, отвечающее за работу с пользователями
- weatherapp/weather - Приложение, отвечающее за работу с основной логикой
Адрес - /accounts/login
.
Представляет собой форму для авторизации пользователей.
Адрес - /accounts/register
.
Представляет собой форму для регистрации пользователей.
Адрес - /
.
Представляет собой главную страницу приложения.
Адрес - /search
.
GET параметр name содержит имя локаций.
Представляет собой главную страницу приложения.
На данной странице отображается коллекция локаций пользователя.
В качестве системы управления базами данных была выбрана PostgreSQL. Для управления объектами бд была использована Django ORM. База данных содержит в себе 3 таблицы:
Users
- таблица, содержащая информацию о пользователях.Sessions
- таблица, содержащая информацию о сессии пользователя.Locations
- таблица, содержащая информацию о коллекции локаций пользователя.
В качестве фреймворка для тестирования был использован unittest. Юнит и интеграционными тестами был покрыт основной функционал приложения. Основные тест-кейсы:
- Проверка корректности аутентификации пользователя
- Проверка работы механизма сессий(создание/истечение срока).
- Проверка авторизации/регистрации пользователей.
- Проверка работы внешнего API. Сервис по работе с OpenWeatherAPI покрыт Мок-тестами.
- Python 3.12
- Django 5.1.2
- PostgreSQL
- docker
- unittest
- requests
- HTML/CSS(Bootstrap5)