From dcf9ae0872f40a5299c06df08edcdc7f715c0571 Mon Sep 17 00:00:00 2001 From: SoldierID101 <150597677+SoldierID101@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:21:08 +0300 Subject: [PATCH] README.md --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/README.md b/README.md index ecddab77..c224cbfa 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,84 @@ [![Build Status](https://app.travis-ci.com/kpdvstu/PTLab2.svg?branch=master)](https://app.travis-ci.com/kpdvstu/PTLab2) # Лабораторная 2 по дисциплине "Технологии программирования" + + +## Цель работы +- Познакомиться с моделью **MVC** и её реализацией во фреймворке **Django**. +- Разобраться с сущностями «модель», «контроллер», «представление». +- Получить навыки разработки веб-приложений с использованием Django. +- Освоить написание модульных тестов. +- Выполнить индивидуальное задание по варианту. + +## Постановка задачи +Базовый учебный проект представляет собой интернет-магазин, реализованный с помощью Django и базы данных PostgreSQL. + +### Индивидуальное задание (вариант 8 — Магазин электроники) +В магазине имеется определённое количество товара каждого вида. +После продажи каждых 10 экземпляров любого товара его цена возрастает на **15%**. + +Функциональность реализована через расширение модели `Product`: +- добавлены поля `sold_count` и `initial_quantity`; +- метод `sell()` автоматически уменьшает остатки, увеличивает счётчик продаж и повышает цену при достижении порога (10, 20, 30 … продаж). + +## Используемые технологии +- Python 3.8 +- Django 4.2 +- PostgreSQL +- psycopg (драйвер для PostgreSQL) +- Unittest (модульные тесты) + +## Развёртывание проекта +1. Клонировать репозиторий: + ```bash + git clone https://github.com/<ваш_логин>/PTLab2.git + cd PTLab2 + ``` +2. Создать базу данных PostgreSQL: + ```sql + CREATE DATABASE django_db OWNER postgres; + ``` +3. Установить переменную окружения с паролем PostgreSQL (пример для PowerShell): + ```powershell + $env:DATABASE_PASSWORD = "ps_password" + ``` +4. Создать и активировать виртуальное окружение: + ```bash + conda create -n tplab2-env python=3.8 + conda activate tplab2-env + ``` +5. Установить зависимости: + ```bash + pip install -r requirements.txt + ``` +6. Выполнить миграции и загрузить данные: + ```bash + python manage.py migrate + python manage.py loaddata products.yaml + ``` +7. Запустить сервер: + ```bash + python manage.py runserver + ``` + Перейти в браузере по адресу: [http://127.0.0.1:8000](http://127.0.0.1:8000) + +## Тестирование +Запуск всех тестов: +```bash +python manage.py test shop/tests/ +``` + +Результат: **7 тестов — все проходят успешно**. +Тесты проверяют: +- корректность типов данных в модели, +- уменьшение количества товара при покупке, +- рост цены на 15% после каждой 10-й продажи, +- мультипликативное повышение цены при пересечении нескольких порогов за одну покупку. + +## Результаты +- Изучена модель MVC на примере Django. +- Развёрнут базовый учебный проект интернет-магазина. +- Реализована дополнительная функциональность по индивидуальному заданию. +- Все тесты успешно пройдены. + +## License +Проект распространяется по лицензии (LICENSE).