Сделать магазин аддаптивный для всех устройств.
- с категориями товаров и подкатегориями (один уровень вложенности)
- наличием Flatpages c редактором
- счетчик просмотров и уникальных посещений
- настроить админку, чтобы было быстро и удобно добавлять новые товары
- возможностью добавлять из админки фото любого размера, чтобы они автоматически форматировались под нужный размер в jpeg
- вывод на сайте и в админке количество уникальных товаров каждой подкатегории и категории
- оптимизация запросов в БД
- удобная пагинация при большом количестве страниц.
- возможностью выбирать товары для главной страницы, а так же помечать как черновик
- наличие поиска товара
- динамический слайдер для вывода фото товара в детализации
- Для оптимизации запросов в БД добавил поле count_prod (общее количество уникальных товаров) в категории, которое будет автоматически пересчитываться при изменении или удалении товара при помощи сигналов post_save и post_delete. => store.models
- На основе Flatpages, написал свое приложение с редактором ckeditor. => flatpage_main
- Для удобства сделал отдельное приложение analytics для подсчета просмотров и уникальных посещений, в котором написал декоратор, который вещается на любую view для анализа (в коммерческой версии, сделан централизованный сбор статистики через middleware).
- Настроил админку (ckeditor, TabularInline, вывод изображений, вывод нужных полей и т.д) => store.admin.py
- Функция для обработки изображений => store.utils.py
- Написал менеджер контекста, который забирает нужные нам поля из связанных моделей, а также оптимизировал запросы во вьюхах при помощи only, select_related и prefetch_related.
- Пагинация , которая отображает по три предыдущие и следующие страницы от текущей, а также первую и последнюю => template.include.paginat.html
- Динамический слайдер => template.product_detail.html
- Поиск на основе __icontains => store.views.Search (в коммерческой версии реализован с использованием функций полнотекстного поиска PostgreSQL)
- Docker-compose - две сборки devop и production (инструкция ниже)
Django server, пользователь root
- docker-compose up --build
- docker-compose exec web sh
- python manage.py makemigrations
- python manage.py migrate
- python manage.py createsuperuser
- В браузере localhost:8000
Nginx, gunicorn, создаем пользователя valery и др. настройки
- docker-compose -f docker-compose.prod.yaml up -d --build
- docker-compose -f docker-compose.prod.yaml exec web sh
- python manage.py makemigrations
- python manage.py migrate
- python manage.py createsuperuser
- python manage.py collectstatic
- В браузере localhost:1337 (Nginx - наружу открыт порт 1337)