В данной домашней работе решены задачи:
Задание 1
Установите Redis как брокер для кеширования. Настройте проект для использования Redis и убедитесь, что всё работает правильно с новыми настройками.
Задание 2
Настройте кеширование для страницы, которая отображает информацию об одном продукте.
решено так : path('product/int:pk/',cache_page(60 * 15)(ProductDetailView.as_view()), name="product_detail"),
Задание 3 Создайте сервисную функцию для работы с продуктами, которая будет возвращать список всех продуктов в указанной категории. Реализуйте отдельное представление и шаблон для отображения этой информации на сайте.
Задание 4 Добавьте низкоуровневое кеширование для списка продуктов.
Решён вопрос с разграничением прав пользователей
как на уровне админки, так и на уровне создания
через shell, так же через фикстуру в command
, а также на уровне доступа к элементам интерфйеса на уровне шаблонов.
Кроме того добавленно разграничение прав пользователей
различающее создателя товарной позиции от других,
и доверяющее создателю вносить правки либо удалять свой товар,
описание, цену, фото, наименование
Добавлены кастомные права к модели продукта. can_unpublish_product — может отменять публикацию продукта
Созданы группу «Модератор продуктов» и назначены ей следующие права:
Разрешение
can_unpublish_product
Разрешение на удаление любого продукта.
Добавлено поле владельца (
owner
) к модели продукта. Оно связано с моделью пользователя через
ForeignKey
.
Продукт автоматически привязывается к создающему его пользователю
CRUD Создание редактирование обновление статей и удаление с формой выставления товара по предписанным признакам!
Реализованна регистрация пользователей, по ссылке отправляемой на почту указанной в форме регистрации, Так же введены ограничения к редактированию и публикации на сайте для не зарегистрированных пользователей. Этот проект был разработан как домашнее задание с использованием фреймворка Django. Он включает в себя приложение каталога с домашней страницей и страницей контактов.
- Django: Фреймворк для веб-разработки
- Bootstrap: Библиотека для стилей frontend
- Python: Язык программирования
- Git: Система управления версиями
django_hw_22/
│ ├── config/
│....├── init.py
│....├── settings.py
│....└── wsgi.py
│ ├── blog/
│.......├── management/
│...........├── init.py
│...........├── commands/
│...............├──init.py
│....├── migrations/
│....├── init.py
│....├── admin.py
│....├── apps.py
│....├── models.py
│....├── templates/
│....├── tests.py
│....└── views.py
│
│ ├── catalog/
│.......├── management/
│...........├── init.py
│...........├── commands/
│...............├── init.py
│....├── migrations/
│....├── init.py
│....├── admin.py
│....├── apps.py
│....├── forms.py
│....├── models.py
│....├── templates/
│....├── tests.py
│....└── views.py
│........├── home.html
│........├── base.html
│........├── product_create.html
│........├── product_update.html
│........├── product_delete_confirm.html
│........├── product_detail.html
│........├── product_list.html
│........└── contacts.html
│ ├── users/
│....├── management/
│........└──commands
│....├── migrations/
│....├── init.py
│....├── admin.py
│....├── apps.py
│....├── forms.py
│....├── models.py
│....├── templates/
│....├── tests.py
│....└── views.py
│ └── static/
....└── css/
........└── bootstrap.min.css
- Реализованы шаблоны, шаблонные теги и фильтры
- Реализована пагинация
- Реализовано добавление продукта пользователем
- Реализована страница продукта
- На главной странице выводятся все продукты
- Домашняя страница: Каталог товаров с фото и краткими описаниями
- Страница контактов: Предоставляет детали контактов и форму для отправки сообщений
- Блог: Блог с публикуемыми тематическими статьями отсортированными по дате, читайте свежее первым
- Регистрация , уровни доступа к функционалу в зависимости от регистрации
- Задействован SMTP с отправкой сгенерированной ссылкой для верификации почты её владельцем
- Клонируйте этот репозиторий
- Создайте виртуальное окружение:
python -m venv venv
- Активируйте виртуальное окружение:
- На Windows:
venv\Scripts\activate
- На macOS/Linux:
source venv/bin/activate
- На Windows:
- Установите зависимости:
pip install -r requirements.txt
- Либо poetry install если вам так удобнее.
- Перейдите в директорию проекта:
cd django_hw_22
- Запустите сервер разработки Django:
python3 manage.py runserver
URL-адреса конфигурируются в файлах django_hw_22/urls.py
и catalog/urls.py
.
Статические файлы (CSS) хранятся в директории static/css/
.
- Основная ветка:
main
- Ветка разработки:
develop
- Ветки для задач: Именованы в соответствии с конкретными задачами (например,
feature/home-page
,feature/contacts-page
)
Этот проект является открытым и лицензируется по MIT.