Skip to content

Lazarus-Phoenix/django_hw_22

Repository files navigation

Проект Skystore


Заходим как гость

Screenshot 2025-02-24 at 06-29-04 AudioMarket · Bootstrap v5.3.png

Проваливаемся как гость в "категории"

Screenshot 2025-02-24 at 06-32-18 AudioMarket · Bootstrap v5.3.png

Тогда заходим как уполномоченный, или админ в данном примере

Снимок экрана от 2025-02-24 06-35-08.png

Проваливаемся как Админ или с полномочиями в "категорию"

Категории в таблице на самом деле ссылки , можно не аплодировать я не сразу догадался так поступить

Снимок экрана от 2025-02-24 06-37-28.png

Проваливаемся в любую категорию, например микрофоны

Получаем товары из категории микрофоны

Снимок экрана от 2025-02-24 06-42-27.png

В данной домашней работе решены задачи:


Задание 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

Вся архитектура функционала сайта переведена с FBV на CBV

  1. Реализованы шаблоны, шаблонные теги и фильтры
  2. Реализована пагинация
  3. Реализовано добавление продукта пользователем
  4. Реализована страница продукта
  5. На главной странице выводятся все продукты

Реализованный функционал

  1. Домашняя страница: Каталог товаров с фото и краткими описаниями
  2. Страница контактов: Предоставляет детали контактов и форму для отправки сообщений
  3. Блог: Блог с публикуемыми тематическими статьями отсортированными по дате, читайте свежее первым
  4. Регистрация , уровни доступа к функционалу в зависимости от регистрации
  5. Задействован SMTP с отправкой сгенерированной ссылкой для верификации почты её владельцем

Инструкции по настройке

  1. Клонируйте этот репозиторий
  2. Создайте виртуальное окружение: python -m venv venv
  3. Активируйте виртуальное окружение:
    • На Windows: venv\Scripts\activate
    • На macOS/Linux: source venv/bin/activate
  4. Установите зависимости: pip install -r requirements.txt
  5. Либо poetry install если вам так удобнее.

Запуск проекта

  1. Перейдите в директорию проекта: cd django_hw_22
  2. Запустите сервер разработки Django: python3 manage.py runserver

Конфигурация URL

URL-адреса конфигурируются в файлах django_hw_22/urls.py и catalog/urls.py.

Статические файлы

Статические файлы (CSS) хранятся в директории static/css/.

Git Flow

  • Основная ветка: main
  • Ветка разработки: develop
  • Ветки для задач: Именованы в соответствии с конкретными задачами (например, feature/home-page, feature/contacts-page)

Лицензия

Этот проект является открытым и лицензируется по MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published