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

Задание
Разработать онлайг-магазин на Flask. Цель проекта Показать, как на Flask можно реализовать: реальный бизнес-функционал, систему ролей и доступа, работу с заказами и оплатой, архитектурно правильный backend без «магии».
Функционал программы
- ✅Каталог товаров
- ✅Просмотр списка товаров
- ✅Поиск и фильтрация товаров
- ✅CRUD операции над товарами
- ✅Страница деталей товара
- ✅Информация о магазине и контакты
- ✅ Оформление и оплата заказа
- ✅Оформление заказа через форму Возможность сразу перейти к оплате товара Интеграция платежной системы Корректная работа с валютой и суммами
- ✅Учёт заказов. Управление заказами - редактирование и удаление. Поиск товара по названи.
- ✅ Пользователи и роли Регистрация и авторизация пользователей Система ролей и прав доступа
Содержание отчета к программе
1 АНАЛИЗ СРЕД И ЯЗЫКОВ КАК ИНСТРУМЕНТОВ РЕАЛИЗАЦИИ.. 4
1.1 Инструментальные средства для разработки веб-приложений. 4
1.2 PyCharm: среда разработки Python-приложений. 8
1.3 Сравнение фреймворков Flask и Django. 9
1.4 Выбор средств разработки сайта онлайн-магазина «Мой магазин». 11
1.5 Выводы к 1 главе. 13
2 ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРИЛОЖЕНИЯ ОНЛАЙН-МАГАЗИНА «МОЙ МАГАЗИН» НА ЯЗЫКЕ PYTHON И ФРЕЙМВОРКЕ FLASK.. 14
2.1 Схематическое представление программного продукта. 14
2.2 Функциональные требования к программному продукту. 16
2.3 Проектирование и разработка приложения онлайн-магазина «Мой магазин» на языке Python и фреймворке Flask. 17
2.4 Выводы по главе 2. 24
ЗАКЛЮЧЕНИЕ. 25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ. 26
ПРИЛОЖЕНИЯ.. 28
Фрагмент программного кода
from email_validator import validate_email, EmailNotValidError
from flask_wtf import FlaskForm
from wtforms import StringField, DateField, PasswordField, SubmitField, FileField
from wtforms.fields.choices import SelectField
from wtforms.fields.numeric import FloatField
from wtforms.fields.simple import BooleanField
from wtforms.validators import DataRequired, EqualTo, ValidationError, Length, NumberRange
from models import Product
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
email = StringField('Email', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Sign Up')
def validate_email(self, email):
try:
# Валидация email
valid_email = validate_email(email.data)
email.data = valid_email['email'] # нормализованный адрес
except EmailNotValidError as e:
raise ValidationError(str(e))
class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
def validate_email(self, email):
try:
# Валидация email
valid_email = validate_email(email.data)
email.data = valid_email['email'] # нормализованный адрес
except EmailNotValidError as e:
raise ValidationError(str(e))
class ProductForm(FlaskForm):
product_name = StringField('Наименование', validators=[DataRequired(), Length(max=100)])
product_photo = FileField('Фото товара')
product_price = FloatField('Цена товара',
validators=[DataRequired(),
NumberRange(min=0, message='Цена не может быть отрицательной')])
category = SelectField('Категория', choices=Product.CATEGORY_CHOICES)
product_is_active = BooleanField('В наличии', default=True)
create_date = DateField('Дата добавления', format='%Y-%m-%d', validators=[DataRequired()])
class SearchForm(FlaskForm):
product_name = StringField('Наименование')
submit = SubmitField('Поиск')
clear = SubmitField('Очистить поиск') # Новое поле для очистки
class OrderForm(FlaskForm):
product_name = StringField("Товар", validators=[DataRequired(), Length(max=100)])
customer_name = StringField("Имя", validators=[DataRequired(), Length(max=100)])
phone = StringField("Телефон", validators=[DataRequired(), Length(max=11)])
address = StringField("Адрес", validators=[DataRequired(), Length(max=100)])
class EditForm(FlaskForm):
product_name = StringField("Товар", validators=[DataRequired(), Length(max=100)])
customer_name = StringField("Имя", validators=[DataRequired(), Length(max=100)])
phone = StringField("Телефон", validators=[DataRequired(), Length(max=11)])
address = StringField("Адрес", validators=[DataRequired(), Length(max=100)])
order_date = DateField('Дата добавления', format='%Y-%m-%d', validators=[DataRequired()])
Пояснения по запуску программы
Инструкция по запуску:
- Установить Python версии 3.x
- 2. Установить редактор кода Visual Studio Code.
- Установить расширения для работы с Python.
- Перейти в каталог проекта
- Установить зависимости командой: pip install -r requirements.txt предварительно переместив файл в папку с проектом
- Запустить приложение командой: python app.py
- Открыть браузер и перейти по адресу: http://127.0.0.1:5000
Телеграм
-