- Познакомиться с моделью MVC и её реализацией во фреймворке Django.
- Разобраться с сущностями «модель», «контроллер», «представление».
- Получить навыки разработки веб-приложений с использованием Django.
- Освоить написание модульных тестов.
- Выполнить индивидуальное задание по варианту.
Базовый учебный проект представляет собой интернет-магазин, реализованный с помощью Django и базы данных PostgreSQL.
В магазине имеется определённое количество товара каждого вида.
После продажи каждых 10 экземпляров любого товара его цена возрастает на 15%.
Функциональность реализована через расширение модели Product:
- добавлены поля
sold_countиinitial_quantity; - метод
sell()автоматически уменьшает остатки, увеличивает счётчик продаж и повышает цену при достижении порога (10, 20, 30 … продаж).
- Python 3.8
- Django 4.2
- PostgreSQL
- psycopg (драйвер для PostgreSQL)
- Unittest (модульные тесты)
- Клонировать репозиторий:
git clone https://github.com/<ваш_логин>/PTLab2.git cd PTLab2
- Создать базу данных PostgreSQL:
CREATE DATABASE django_db OWNER postgres;
- Установить переменную окружения с паролем PostgreSQL (пример для PowerShell):
$env:DATABASE_PASSWORD = "ps_password"
- Создать и активировать виртуальное окружение:
conda create -n tplab2-env python=3.8 conda activate tplab2-env
- Установить зависимости:
pip install -r requirements.txt
- Выполнить миграции и загрузить данные:
python manage.py migrate python manage.py loaddata products.yaml
- Запустить сервер:
Перейти в браузере по адресу: http://127.0.0.1:8000
python manage.py runserver
Запуск всех тестов:
python manage.py test shop/tests/Результат: 7 тестов — все проходят успешно.
Тесты проверяют:
- корректность типов данных в модели,
- уменьшение количества товара при покупке,
- рост цены на 15% после каждой 10-й продажи,
- мультипликативное повышение цены при пересечении нескольких порогов за одну покупку.
- Изучена модель MVC на примере Django.
- Развёрнут базовый учебный проект интернет-магазина.
- Реализована дополнительная функциональность по индивидуальному заданию.
- Все тесты успешно пройдены.
Проект распространяется по лицензии (LICENSE).