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

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

Задание
Разработать приложение Django для учета компьютерных комплектующих: разработайте простое приложение используюя Django для учета компьютерных комплектующих. Приложение должно позволять добюавлять, удалять и изменять данные, выводить сведения о ценах, давать возможность искать товар-комплектующее по наименованию, а также позволять пользователю зарегистрироваться в приложении.
Функционал программы
- добавление комплектующих
- редактирование комплектующих
- удаление комплектующих
- поиск комплектующих по наименованию
- вывод графика цен и поиск по наименованию
- регистрация и авторизация пользователей
Фрагмент программного кода
from django.shortcuts import render, redirect
from .models import *
from .forms import ComponentForm
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from io import BytesIO
import base64
# Create your views here.
def index(request):
return render(request, 'index.html')
def plot_component_prices(components):
fig, ax = plt.subplots()
component_names = [product.name for product in components]
component_prices = [product.price for product in components]
ax.bar(component_names, component_prices, color='lightcoral')
plt.xlabel('Наименование товара')
plt.ylabel('Цена товара')
plt.title('Статистика цен на товары')
plt.xticks(rotation=45)
graph_file = BytesIO()
plt.savefig(graph_file, format='png')
graph_file.seek(0)
graph_base64 = base64.b64encode(graph_file.read()).decode()
plt.close('all')
return graph_base64
def components(request):
components = Component.objects.all()
context = {
'components': components,
}
return render(request, 'component_list.html', context)
def add_component(request):
if request.method == 'POST':
form = ComponentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('component_list')
else:
form = ComponentForm()
return render(request, 'add_component.html', {'form': form})
def price_statistics(request):
name = request.GET.get('name')
components = Component.objects.all()
if name:
components = components.filter(name__icontains=name)
graph_base64 = plot_component_prices(components)
context = {
'graph_base64': graph_base64,
'components': components,
'header': f"Статистика цен для '{name}'" if name else "Статистика цен на товары"
}
return render(request, 'price_statistics.html', context)
def search_components(request):
name = request.GET.get('name')
components = Component.objects.filter(name__icontains=name)
header = f"Найден товар '{name}'"
context = {
'components': components,
'header': header
}
return render(request, 'component_list.html', context)
def print_components(request):
components = Component.objects.all()
return render(request, 'component_list.html', {'components': components})
Пояснения по запуску программы
Для эффективной работы с приложением вам потребуется:
- редактор кода VS Code - скачать можно тут - https://code.visualstudio.com/download
- интерпретатор языка Python, скачать можно тут - https://www.python.org/downloads/
- После установки всего выше описанного, настройте VS Code для работы с Python установив необходимые расширения (см. инструкцию - https://youtu.be/j5e5gwZgMH8) .
- Переходите в директорию с проектом - в терминале вводите cd Shop и затем python manage.py runserver
- Запускаете приложение и пользуетесь. Также вы можете самостоятельно выложить проект на Heroku.
Телеграм
-