правка описания

main
Пилипенко Андрей Борисович 1 month ago
parent f297b4986c
commit d6c8c0ac21

@ -1,36 +1,132 @@
Напиши unittest-ы # Курсовая работа: Интернет-магазин для игры
в случае фошибки вернуть JsonResponse({"error": format(error)}, status=500) **Автор:** Пилипенко Степан Андреевич
**Год выполнения:** 2025
1 -http://localhost:8090/shop/ **Направление:** Разработка веб-приложения
Запрос GET возвращает ответ JsonResponse c формата JsonResponse({"OK": products}, status=200)
пример products: ---
[{'id': 2, 'name': 'Серебрянный паровоз', 'count': 23, 'reserved': 0, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/silver_train.png ', 'description': 'Серебро - благородный метал, такой паровоз не стыдно выкатить на рельсы', 'type': 'skin', 'cost': Decimal('50.00')}, {'id': 4, 'name': 'Золотая башня', 'count': 10, 'reserved': 0, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/golden_tower.png ', 'description': 'Целая башня из чистого золота, кто-то скажет - непрактично, но мы ответим - да', 'type': 'skin', 'cost': Decimal('100.00')}, {'id': 6, 'name': 'Бронзовая башня', 'count': 100, 'reserved': 0, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/bronze_tower.png ', 'description': 'Бронзовая башня - великая классика, как оловянный солдатик', 'type': 'skin', 'cost': Decimal('10.00')}, {'id': 7, 'name': 'Капибара', 'count': 30, 'reserved': 0, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/capi_avatar.png ', 'description': 'Почему нет', 'type': 'avatar', 'cost': Decimal('25.00')}, {'id': 9, 'name': 'Штурмовик', 'count': 30, 'reserved': 0, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/starwars_avatar.png ', 'description': 'Не всегда попадает в цель, зато всегда лоялен императору', 'type': 'avatar', 'cost': Decimal('25.00')}, {'id': 3, 'name': 'Бронзовый паровоз', 'count': 98, 'reserved': 2, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/bronze_train.png ', 'description': 'Развитие цивилизации начиналось с бронзы, этот паровоз символизирует начало прогресса', 'type': 'skin', 'cost': Decimal('10.00')}, {'id': 8, 'name': 'Капитан-черепаха', 'count': 30, 'reserved': 1, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/tortule_avatar.png ', 'description': 'Настоящий пират никуда не торопиться', 'type': 'avatar', 'cost': Decimal('25.00')}, {'id': 5, 'name': 'Серебрянная башня', 'count': 18, 'reserved': 2, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/silver_tower.png ', 'description': 'Серебряная башня, такая серая и холодная, так бы и заточил туда принцессу', 'type': 'skin', 'cost': Decimal('50.00')}, {'id': 1, 'name': 'Золотой паровоз', 'count': 9, 'reserved': 0, 'picture_url': 'https://git.softwarrior.ru/stepik104/game_shop/raw/branch/main/images/golden_train.png ', 'description': 'Золотой, блестящий, ну разве не чудо', 'type': 'skin', 'cost': Decimal('100.00')}, {'id': 28, 'name': 'Тестовый товар 1', 'count': 8, 'reserved': 0, 'picture_url': '', 'description': 'Описание 1', 'type': 'test', 'cost': Decimal('50.00')}, {'id': 29, 'name': 'Тестовый товар 2', 'count': 4, 'reserved': 0, 'picture_url': '', 'description': 'Описание 2', 'type': 'test', 'cost': Decimal('30.00')}]
## 📌 Описание проекта
Проверить что не пустой
В рамках курсовой работы разработан **интернет-магазин внутриигровых товаров** — полнофункциональное веб-приложение, позволяющее пользователям:
2 - http://localhost:8090/login/
Запрос POST с body - Просматривать каталог игровых предметов,
login: str - Добавлять товары в корзину и оформлять покупки,
password: str - Просматривать историю своих заказов,
email: str - Регистрироваться, авторизовываться и управлять профилем.
возвращает JsonResponse({"OK": token}, status=200)
пример token Проект реализован с использованием современных технологий фронтенда и бэкенда и соответствует принципам разделения ответственности, безопасности и удобства использования.
token формата: uuid.uuid4(), пример: 44decdbc-7120-4838-abf8-7528a11467a9
---
3 - http://localhost:8090/logout/
Запрос POST с header: ## 🖥️ Фронтенд
Token: str пример: 44decdbc-7120-4838-abf8-7528a11467a9
возвращает JsonResponse({"OK": token}, status=200) - **Язык:** TypeScript
- **Сборка:** Vite
4 - http://localhost:8090/basket/ - **Фреймворк:** React
Запрос POST с header: - **Управление состоянием:** Redux Toolkit
Token: str пример: 44decdbc-7120-4838-abf8-7528a11467a9 - **Формы:** React Hook Form
возвращает JsonResponse({"OK": basket}, status=200) - **UI компонент:** Material UI
ошибка если токен невалидный, напиши тест на невалидный токен - **Маршрутизация:** React Router
5 - http://localhost:8090/history/ ### Основные функции фронтенда:
Запрос POST с header: - Динамическая загрузка списка товаров,
Token: str пример: 44decdbc-7120-4838-abf8-7528a11467a9 - Валидация форм регистрации и входа,
возвращает JsonResponse({"OK": histories}, status=200) - Отображение корзины и управление её содержимым,
ошибка если токен невалидный, напиши тест на невалидный токен - Защита маршрутов (только для авторизованных пользователей),
- Отображение личного кабинета и истории покупок.
---
## ⚙️ Бэкенд
- **Язык:** Python
- **Фреймворк:** Django
- **База данных:** PostgreSQL
- **Аутентификация:** Токены
- **API:** RESTful (через Django REST Framework или нативные view)
### Реализованные модели:
- `User` — пользователь,
- `Shop` — игровой товар (название, описание, цена, изображение),
- `Order` — заказ (связь с пользователем, дата, статус),
- `OrderItem` — позиция в заказе (товар + количество).
### Основные эндпоинты:
- `/api/auth/register/` — регистрация,
- `/api/auth/login/` — вход,
- `/api/products/` — список товаров,
- `/api/cart/` — управление корзиной,
- `/api/orders/` — история покупок.
---
## 🔐 Безопасность
- Пароли хранятся в хэшированном виде (bcrypt через Django),
- Сессии управляются безопасно,
- Защита от CSRF и XSS (встроенные механизмы Django и React).
---
## 📁 Структура проекта
```
game-shop/
├── backend/ # Django-приложение
│ ├── ... # основное приложение
│ ├── manage.py
│ └── requirements.txt
├── frontend/ # React + Vite
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── storage/ # Redux slices
│ │ └── App.tsx
│ └── vite.config.ts
└── README.md
```
---
## ▶️ Запуск проекта
1. **Бэкенд**:
```bash
cd backend
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```
2. **Фронтенд**:
```bash
cd frontend
npm install
npm run dev
```
Приложение будет доступно по адресу: `https://shop.softwarrior.ru`
---
## 💡 Заключение
Данная курсовая работа демонстрирует навыки:
- проектирования full-stack веб-приложений,
- работы с базами данных,
- реализации аутентификации и управления состоянием,
- интеграции фронтенда и бэкенда через API.
Проект может быть расширен за счёт добавления:
- платёжных систем (Stripe, PayPal),
- поиска и фильтрации товаров,
- админ-панели,
- уведомлений и email-рассылок.
---
> **Примечание:** Исходный код доступен по запросу.
Loading…
Cancel
Save