from flask import Flask, request, redirect import json import os app = Flask(__name__) DB_FILE = 'data.json' # Функция для создания нового JSON-файла def initialize_db(): try: with open(DB_FILE, 'w') as f: json.dump([], f) # Создаём пустой массив в файле except Exception as e: print(f"Ошибка при создании файла {DB_FILE}: {e}") # Функция для загрузки данных из файла def load_products(): if not os.path.exists(DB_FILE): # Если файл не существует, создаём его initialize_db() try: with open(DB_FILE, 'r') as f: return json.load(f) except (json.JSONDecodeError, Exception) as e: print(f"Ошибка при чтении файла {DB_FILE}: {e}") return [] # Функция для сохранения данных в файл def save_products(products): try: with open(DB_FILE, 'w') as f: json.dump(products, f) except Exception as e: print(f"Ошибка при записи в файл {DB_FILE}: {e}") # Вспомогательная функция для обёртки HTML-контента def html_wrapper(content): return f''' Каталог {content} ''' # Маршрут для отображения каталога товаров @app.route('/') def catalog(): products = load_products() products_html = ''.join([ f'''

{p['name']}

{p['description']}

Цена: {p['price']} руб.

''' for p in products ]) return html_wrapper(f'''
Каталог товаров
{products_html}
''') # Маршрут для админ-панели (добавление товаров) @app.route('/admin', methods=['GET', 'POST']) def admin(): if request.method == 'POST': products = load_products() # Добавляем новый товар из формы products.append({ 'name': request.form['name'], 'description': request.form['description'], 'price': request.form['price'], 'image': request.form['image'] }) save_products(products) return redirect('/admin') return html_wrapper('''
Админ-панель
''') # Точка входа в приложение if __name__ == '__main__': # Проверяем наличие файла при запуске и создаём его при необходимости if not os.path.exists(DB_FILE): initialize_db() app.run(host='0.0.0.0', port=7860)