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

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

Задание
Напишите простое приложение на Flask позволяющее вести учет клиентов компании. Рекомендации: Python 3.11 или 3.12, база данных SQLite или любая другая по желанию. Использовать стили css и js, желательно использование Bootstrap.
Функционал программы
- добавление клиентов
- удаление клиентов
- редактирование клиентов
- поиск клиентов
Фрагмент программного кода
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declared_attr
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///customers.db'
db = SQLAlchemy(app)
class Person(db.Model):
__abstract__ = True
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
address = db.Column(db.String(100))
phone_number = db.Column(db.String(15))
email = db.Column(db.String(50))
@declared_attr
def __tablename__(self):
return None # Запрещаем создание таблицы для класса Person
class Customer(Person):
__tablename__ = 'customers' # Указываем таблицу для класса Customer
@app.route('/')
@app.route('/home')
def index():
customers = Customer.query.all()
return render_template('index.html', customers=customers)
@app.route('/customers/<int:id>')
def customer_detail(id):
customer = Customer.query.get(id)
return render_template("customer_detail.html", customer=customer)
@app.route('/add_customer', methods=['POST', 'GET'])
def add_customer():
if request.method == 'POST':
name = request.form['name']
address = request.form['address']
phone_number = request.form['phone_number']
email = request.form['email']
customer = Customer(name=name, address=address, phone_number=phone_number, email=email)
try:
db.session.add(customer)
db.session.commit()
return redirect(url_for('index'))
except:
return "При добавлении клиента произошла ошибка!!!"
else:
return render_template("add_customer.html")
@app.route('/customers/<int:id>/update', methods=['POST', 'GET'])
def employee_update(id):
customer = Customer.query.get(id)
if request.method == 'POST':
customer.name = request.form['name']
customer.address = request.form['address']
customer.phone_number = request.form['phone_number']
customer.email = request.form['email']
try:
db.session.commit()
return redirect(url_for('index'))
except:
return "При изменении клиента произошла ошибка!!!"
else:
return render_template("customer_update.html", customer=customer)
@app.route('/customers/<int:id>/delete')
def employee_delete(id):
customer = Customer.query.get_or_404(id)
try:
db.session.delete(customer)
db.session.commit()
return redirect(url_for('index'))
except:
return "При удалении клиента произошла ошибка!!!"
@app.route('/search', methods=['POST', 'GET'])
def search():
if request.method == 'POST':
search_term = request.form['search_term']
customers = Customer.query.filter(Customer.name.ilike(f"%{search_term}%")).all()
return render_template('search_results.html', customers=customers, search_term=search_term)
else:
return render_template('search_form.html')
if __name__ == '__main__':
with app.app_context():
db.create_all()
app.run(debug=True)
Пояснения по запуску программы
Для эффективной работы с приложением вам потребуется:
- редактор кода VS Code - скачать можно тут - https://code.visualstudio.com/download или PyCharm - https://www.jetbrains.com/ru-ru/pycharm/ Я же использовал PyCharm Community - https://www.jetbrains.com/ru-ru/pycharm/download/?section=windows
- интерпретатор языка Python, скачать можно тут - https://www.python.org/downloads/
- После установки всего выше описанного, настройте VS Code для работы с Python установив необходимые расширения (см. инструкцию - https://youtu.be/j5e5gwZgMH8) . Или откройте проект в PyCharm.
- Запускаете приложение и пользуетесь. Также вы можете самостоятельно выложить проект на Heroku или другой хостинг по вашему усмотрению. Также можете доработать проект как вам нужно.
Телеграм
-