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

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

Задание
Разработать простое Flask-приложение, которое будет позволять пользователю вести учет товаров. Это должно быть простое одностраничное приложение с возможностью добавлять, изменять и удалять товары. в качестве БД используйте SQLite.
Функционал программы
- добавление товаров
- вывод детальной информации о товаре
- Сизменение товара
- удаление товара
Фрагмент программного кода
from flask import Flask, render_template, request, url_for, redirect
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, IntegerField, DateField, DecimalField
from wtforms.validators import DataRequired
from datetime import datetime
app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///products.db'
app.config['SECRET_KEY'] = 'your_secret_key_here'
db = SQLAlchemy(app)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
description = db.Column(db.Text, nullable=False)
quantity = db.Column(db.Integer, nullable=False)
date_receipt = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
price = db.Column(db.Float, nullable=False)
class ProductForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
description = TextAreaField('Description', validators=[DataRequired()])
quantity = IntegerField('Quantity', validators=[DataRequired()])
date_receipt = DateField('Date Receipt', validators=[DataRequired()])
price = DecimalField('Price', validators=[DataRequired()])
@app.route('/', methods=['POST', 'GET'])
def index():
form = ProductForm()
if form.validate_on_submit():
name = form.name.data
description = form.description.data
quantity = form.quantity.data
date_receipt = form.date_receipt.data
price = form.price.data
product = Product(name=name, description=description,
quantity=quantity, date_receipt=date_receipt, price=price)
db.session.add(product)
db.session.commit()
return redirect(url_for('index'))
products = Product.query.all()
return render_template('index.html', form=form, products=products)
@app.route('/products/<int:id>')
def product_detail(id):
product =Product.query.get(id)
return render_template("product_detail.html", product=product)
@app.route('/products/<int:id>/delete')
def product_delete(id):
product = Product.query.get_or_404(id)
try:
db.session.delete(product)
db.session.commit()
return redirect(url_for('index'))
except:
return "При удалении товара произошла ошибка!!!"
@app.route('/products/<int:id>/update', methods=['POST', 'GET'])
def product_update(id):
product = Product.query.get(id)
form = ProductForm(obj=product)
if request.method == 'POST':
product.name = request.form['name']
product.description = request.form['description']
product.quantity = request.form['quantity']
product.date_receipt = datetime.strptime(request.form['date_receipt'], '%Y-%m-%d')
product.price = request.form['price']
try:
db.session.commit()
return redirect(url_for('index'))
except Exception as e:
return f"При изменении товара произошла ошибка: {str(e)}"
else:
return render_template("product_update.html", product=product, form=form)
if __name__ == '__main__':
with app.app_context():
db.create_all()
app.run(debug=True)
Пояснения по запуску программы
Приветствую! За раннее выражаю благодарность за покупку работы и подписку на мой YouTube-канал - https://www.youtube.com/channel/UC3XXxvCFq5i4laCmPE2zI9w
Для эффективной работы с приложением вам потребуется:
- редактор кода VS Code - скачать можно тут - https://code.visualstudio.com/download
- интерпретатор языка Python, скачать можно тут - https://www.python.org/downloads/ Однако скачивать версию 3.12 не советую, есть проблемы с установкой библиотек. Рнкомендуемая версия - 3.11.7.
- После установки всего выше описанного, настройте VS Code для работы с Python установив необходимые расширения (см. инструкцию - https://youtu.be/j5e5gwZgMH8) .
- Запускаете приложение и пользуетесь. Также вы можете самостоятельно выложить проект на Heroku.

Телеграм
-