Скриншот архива с проектом
Структура проекта
Задание
Напишите простое приложение на 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 или другой хостинг по вашему усмотрению. Также можете доработать проект как вам нужно.
admin