Создайте веб-приложение на Django, которое будет реализовывать функциональность библиотеки книг.
- Книга (название, автор, год издания, краткое описание, изображение обложки)
- Автор (имя, дата рождения, краткая биография)
- Пользователь (стандартная модель пользователя Django с расширенными полями, если необходимо)
- Регистрация/Авторизация пользователей
- Просмотр списка книг
- Просмотр детальной информации о книге
- Поиск книг по названию или автору
- Возможность добавлять, редактировать и удалять книги (только для администраторов или авторизованных пользователей)
- Возможность оставлять комментарии к книгам (для авторизованных пользователей)
- Реализовать API endpoints для просмотра списка книг и детальной информации о книге. Используйте Django Rest Framework.
- Реализация пагинации для списка книг
- Возможность рейтинга книг пользователем
- Использование Docker для развертывания приложения
- Автоматические тесты для основного функционала
- Код должен быть написан аккуратно и следовать PEP 8.
- Комментарии к сложным или неочевидным местам.
- Четкое разделение логики между views, models и templates.
- Создана модель Автора и Книги. Дополнительно создана модель Комментарии
- Модели зарегистрированы в админке.
- Создано 8 представлений. Все представления на основе классов:
- Страница со всеми книгами
- Страница книги
- Страница изменения комментария - кнопка видна только автору комментария
- Страница подтверждения удаления комментария - кнопка видна только автору комментария
- Страница добавления книги - доступна только суперпользователю или пользователю из группы
editors
- Страница изменения книги - доступна только суперпользователю или пользователю из группы
editors
- Страница удаления книги - доступна только суперпользователю или пользователю из группы
editors
- Страница с результатами поиска
- Созданы 5 форм. Вместо использования стандартных в представлениях, в основном для назначения имени полю, указания ограничений и добавления Bootstrap-классов.
- Создан и зарегистрирован контекстный процессор, передающий на все страницы форму поиска.
- Реализована возможность оценить книгу зарегистрированному пользователю
- Переопределены формы регистрации и авторизации для добавления Bootstrap-классов
- Написаны два представления
- Написан сериализатор для модели книг
- Созданы два представления для получения GET-запросов.
Проект запущен на VPS-сервере в Docker-контейнере.
Сайт доступен по ссылке: удалён
API:
Все книги - метод GET: /api/all_books/
Книга - метод GET: /api/get_book/<int:pk>
Логин и пароль суперпользователя: admin
# 1. Скачать и распаковать репозиторий
# 2. Открыть проект в Pycharm или в виртуальном окружении
# 3. Установить пакеты:
pip install -r requirements.txt
# 4. Запустить проект:
python manage.py runserver
# 1. Скачать и распаковать репозиторий
# 2. Открыть в терминале директорию проекта
# 3. Выполнить сборку образа:
sudo docker build -t lad_image .
# 4. Запустить контейнер:
sudo docker run --name lad -p 9999:9999 -d lad_image
Тестовое задание выполнил Иван "proDream" Ашихмин