На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Веб-сервис магазина оптики (Python, Django, DRF, SQLite, Vue.js)

Скриншот архива с проектом

Структура проекта

Задание

Разработать веб-сервис для магазина оптики используя современный стек технологий - Python Django - бекэнд и Vue + Vite - фронтенд. Приложение должно позволять вести учёт товаров, клиентов и продаж с построением аналитических графиков. 

Функционал программы

  • учёт товаров
  • учёт клиентов
  • учёт продаж
  • аналитика по всем товарам и в разрезе каждого товара

Фрагмент программного кода

from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.core.exceptions import ValidationError
from decimal import Decimal
# Create your models here.


class Product(models.Model):
    objects = models.Manager()
    name = models.CharField(max_length=100, verbose_name="Товар")
    description = models.TextField(verbose_name="Описание товара")
    CATEGORY_CHOICES = [
        ('Очки', 'Очки'),
        ('Линзы', 'Линзы'),
        ('Аксессуары', 'Аксессуары'),
        ('Оправы', 'Оправы'), 
    ]
    category = models.CharField(max_length=50, choices=CATEGORY_CHOICES, verbose_name='Категория', null=True, blank=True)
    price = models.DecimalField(verbose_name="Цена товара", max_digits=10,
                                decimal_places=2)
    photo = models.ImageField(upload_to='uploads/images',                              
                              verbose_name="Фото товара",
                              null=True, blank=True)

    def __str__(self):
        return self.name
    
    class Meta:
        verbose_name = 'Товар'
        verbose_name_plural = 'Товары'
        
        

class Client(models.Model):
    objects = models.Manager()
    name = models.CharField(max_length=100, verbose_name='Имя клиента')
    email = models.EmailField(verbose_name='Email')
    phone = models.CharField(max_length=15, verbose_name='Телефон')
    photo = models.ImageField(upload_to='uploads/images',
                              help_text="Введите фото",
                              verbose_name="Фото клиента",
                              null=True, blank=True)
    
    class Meta:
        verbose_name = 'Клиент'
        verbose_name_plural = 'Клиенты'
        
    def __str__(self):
        return self.name
    
    
    
class Sale(models.Model):
    objects = models.Manager()
    client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='sales', verbose_name='Клиент')
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='sales', verbose_name='Товар')
    date = models.DateField(verbose_name='Дата продажи')
    start_quantity = models.PositiveIntegerField(verbose_name="Начальное количество")
    end_quantity = models.PositiveIntegerField(verbose_name="Конечное количество")
    price = models.DecimalField(verbose_name="Цена товара", max_digits=10, decimal_places=2)
    amount = models.DecimalField(verbose_name="Итоговая сумма", max_digits=10, decimal_places=2, editable=False)

    class Meta:
        verbose_name = 'Продажа'
        verbose_name_plural = 'Продажи'

    def save(self, *args, **kwargs):
        if self.end_quantity < self.start_quantity:
            raise ValidationError("Конечные продажи должны быть больше или равны начальному количеству.")
        self.amount = self.get_total_amount()
        super().save(*args, **kwargs)

    def get_sold_quantity(self):
        """Количество проданных единиц"""
        return int(self.end_quantity) - int(self.start_quantity)

    def get_total_amount(self):
        """Итоговая сумма: продано * цена"""
        return Decimal(self.get_sold_quantity()) * self.price

    def __str__(self):
        return f"{self.client} - {self.product.name} | {self.date} | Продано: {self.get_sold_quantity()} шт. | На сумму: {self.get_total_amount()} руб."
        
        
        



Пояснения по запуску программы

Запускаем и радуемся! Шучу! 1. Ставим VSCode 2. Ставим Python 3. Ставим Node.js 4. Устанавливаем расширеня для VSCode для работы с Python и Vue.js 5. Запускаем сервер - cd Backend - cd server - python manage.py runserver 6. Запускаем фронтенд - так как Vue у нас с Vite, то запуск идет как npm run dev (cd Frontend- cd optics-frontend). Ну а после кликаем на соответствующие ссылки и радуемся.  И не забываем создать суперпользователя - python manage.py createsuperuser

 

Купить 7000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)
Веб-сервис магазина оптики (Python, Django, DRF, SQLite, Vue.js)

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

7000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

Optics_Service_Shop.zip
60994022
Оцени работу

рейтинг

Веб-сервис магазина оптики (Python, Django, DRF, SQLite, Vue.js)
Веб сервис для магазина оптики - это система позволяющая вести учёт продаж, клиентов, товаров и строить аналитические графики.
Категория: Образование
Стоимость: 7000,00