Монолитное веб-приложение на Django для организации обмена вещами между пользователями.
Пользователи могут размещать объявления о товарах для обмена, просматривать чужие объявления и отправлять предложения на обмен.
В приложении организован удобный инфтерфейс, а также необходимая функциональность:
- Создание, редактирование и удаление объявлений для залогиненных пользователей.
- Отдельные страницы просмотра всех объявлений и только своих (для авторизованного пользователя).
- Фильтрация и поиск по ключевым словам в заголовке и описании объявления.
- Страницы детального просмотра объявлений, на которых есть опция "предложить обмен" при определённых условиях:
- Пользователь должен быть авторизован.
- Пользователь не может предложить обмен сам себе.
- Отдельные страницы для просмотра исходящих и входящих предложений, фильтрация по статусу для обеих групп, а также поиск по отправителям для входящих.
- Важно:
В момент, пока предложение находится на рассмотрении, предложенный товар скрывается из списка всех товаров платформы. Также пользователь не может снова предложить этот товар до окончания рассмотрения предложения другой стороной. При принятии предложения второй стороной из списка скрываются оба товара.
- Важно:
- Flash-уведомления об операциях с объявлениями, предложениями и учётными записями.
- Возможность регистрации и смены пароля через email (по умолчанию настроено на консольный вывод сообщения и только для пользователей, у которых указана почта).
- Admin-панель с поиском и фильтрацией в моделях.
- Также создана модель Category для категорий. Новые категории можно создавать только через admin-панель.
- Реализована API для получения всех объявлений или только конкретного по id. Организована автоматическая документация.
- Язык: Python 3.8+.
- Веб-фреймворк: Django 4+ (с использованием встроенной ORM).
- Шаблонизация: Django Templates для создания HTML-страниц.
- База данных: PostgreSQL (по умолчанию).
- Django REST Framework. Автоматическая документация API (Swagger-UI или ReDoc).
- Тестирование: Unittest для проверки ключевых функций приложения.
- Клонируем репозиторий:
git clone https://github.com/MLKolt/Effective_Mobile_Test.git- Создаем виртуальное окружение:
python -m venv .venv
# на Linux/macOS:
source .venv/bin/activate
# на Windows:
.venv\Scripts\activate- Устанавливаем зависимости:
pip install --upgrade pip
pip install -r requirements.txt- Применяем миграции:
py manage.py migrate- Создаем суперпользователя:
py manage.py createsuperuser- Запуск сервера:
py manage.py runserver# HTML-интерфейс:
http://127.0.0.1:8000/ads/
#Базовый JSON-эндпоинт:
http://127.0.0.1:8000/api/ads/
#Swagger-UI:
http://127.0.0.1:8000/api/swagger/
# ReDoc:
http://127.0.0.1:8000/api/redoc/- Запуск тестов:
py manage.py test ads