Новости

Приложение services уже имеет богатый функционал и продуманную базовую архитектуру. Однако, чтобы сделать его максимально красивым, простым в поддержке и понятным для пользователей, стоит провести реф

Главные 28.07.2026 23:46 7 просмотров 2 событий за день Все новости за 28.07.2026

События дня 28.07.2026

В этот день произошло событий: 2


1. Приложение services уже имеет богатый функционал и продуманную базовую архитектуру. Однако, чтобы сделать его максимально красивым, простым в поддержке и понятным для пользователей, стоит провести реф

Время: 21:45

Приложение services уже имеет богатый функционал и продуманную базовую архитектуру. Однако, чтобы сделать его максимально красивым, простым в поддержке и понятным для пользователей, стоит провести рефакторинг и визуальную полировку по 4 ключевым направлениям:


1. 🧹 Чистота и оптимизация Backend (models.pyviews.pysignals.py)

  1. Очистка models.py от устаревшего/неиспользуемого кода:

    • В  сейчас остались закомментированные фрагменты выборов технологий (TECHNOLOGY_CHOICES) и устаревшее текстовое поле old_category_tag. Их стоит полностью удалить или перенести в миграции архива.
    • Единый источник истины для валют: Отображение валют ({'RUB': '₽', ...}) дублируется в методе модели get_price_display() и в админке category_price_display(). Лучше вынести его в словарь-константу модуля или использовать TextChoices.
  2. Исправление обработки ошибок в ServiceOrderView (views.py):

    • Если пользователь отправляет форму заказа с ошибкой (например, некорректный телефон), ServiceOrderView.post в  возвращает detail.html без дополнительных объектов (benefitsstepsfaqsprice_plansrelated_portfolio). Из-за этого при ошибке ввода страница услуги теряет свои тарифы и блоки.
    • Добавить вызов вспомогательного метода get_context_data() для гарантированного сохранения всех блоков страницы при ошибках валидации.
  3. Создание недостающего шаблона поиска:

    • В  есть класс ServiceSearchView, который ссылается на services/search.html, однако этого файла сейчас нет. Стоит добавить его или единовременно связать поиск с шаблоном каталога list.html.
  4. Интеграция писем с Celery в signals.py:

    • В  асинхронная отправка писем реализована через сырые потоки threading.Thread. Поскольку в проекте настроен Celery + Redis, отправку уведомлений о заказах надежнее перевести на Celery-таски (для защиты от потери писем при перезапуске сервера).

2. 🎨 UI/UX и модульность шаблонов (templates/services/)

  1. Декомпозиция шаблонов (Инклюды):

    • Сейчас  представляет собой большой монолитный файл. Чтобы сделать код понятным и простым, целесообразно вынести логические блоки в отдельные под-шаблоны:
      • templates/services/includes/_hero.html — главная шапка с иконкой, базовой ценой и CTA.
      • templates/services/includes/_price_plans.html — сетка тарифных планов (Базовый / Стандарт / VIP) с яркой подсветкой рекомендуемого тарифа.
      • templates/services/includes/_steps.html — пошаговый таймлайн проведения работ.
      • templates/services/includes/_faq.html — интерактивный аккордеон вопросов и ответов.
      • templates/services/includes/_order_modal.html — всплывающее или встроенное окно оформления заказа.
  2. Визуальная полировка карточек в list.html:

    • В  добавить плавные эффекты наведения (glow / hover lift), яркие теги для популярных услуг ("🔥 Хит"), стек используемых технологий в виде аккуратных микро-бейдж-иконок.

3. ⚙️ Удобство и чистота в Админке (admin.py)

  1. Вынос CSS из Python-кода:

    • В  многие цвета и стили заданы инлайновыми тегами style="...". Все эти стили лучше перенести в , оставив в Python только вызов нужных классов (например, .badge-status-new).
  2. Быстрые действия (Admin Actions):

    • Добавить экспорт списка заказов в CSV/Excel с фильтрацией по датам и быстрый перевод статусов в 1 клик прямо из списка.

📋 План реализации

Этап Задача Затронутые файлы
1. Refactoring Backend Удаление неиспользуемого кода, вынос констант валют, исправление передачи контекста при ошибке формы.
2. Celery Signals Перевод email-уведомлений на Celery-таски.
3. Templates Modularization Разбиение detail.html на инклюды, создание search.html. templates/services/*
4. UI & Admin Polish Очистка admin.py от HTML-хаков, вынос в CSS, улучшение карточек услуг. services.css

 


2. Я разработал детальный план по приведению приложения

Время: 21:45

Я разработал детальный план по приведению приложения 

к структуре и функционалу приложения .

Ключевые изменения:

  1. Расширение моделей Portfolio и PortfolioCategory: добавление стека технологий (Technology), уровня сложности, валют, краткого описания, индекса сортировки, популярности, сроков выполнения и связанных услуг.
  2. Новые сущностиPortfolioOrder (система заявок/заказов), PortfolioBenefit (преимущества), PortfolioStep (этапы работы), PortfolioFAQ (частые вопросы), PortfolioPricePlan (тарифные планы).
  3. Улучшение админ-панели: инлайны, цветные бейджи статистики, превью изображений, гибкие фильтры, экспорт заказов в CSV.
  4. Классовые представления (CBVs)PortfolioListView (с фильтрами, сортировкой по цене/просмотрам и пагинацией), PortfolioDetailView (атомарный счетчик просмотров, лендинговая структура), PortfolioOrderView и PortfolioSearchView.
  5. Сигналы и Celery: фоновые задачи отправки email-уведомлений клиенту и администратору при оформлении заказа.
  6. Обновление шаблонов: структура включений (includes/), лендинговая детальная страница, виджет заказа, интеграция с корзиной и поиск.

Поделиться новостью

Хронология событий за 28.07.2026

1
Приложение services уже имеет богатый функционал и продуманную базовую архитектуру. Однако, чтобы сделать его максимально красивым, простым в поддержке и понятным для пользователей, стоит провести реф
Другое событие 00:45

Приложение services уже имеет богатый функционал и продуманную базовую архитектуру. Однако, чтобы сделать его максимально красивым, простым в поддержке и понятным для пользователей, стоит провести рефакторинг и визуальную полировку по 4 ключевым направлениям:


1. 🧹 Чистота и оптимизация Backend (models.pyviews.pysignals.py)

  1. Очистка models.py от устаревшего/неиспользуемого кода:

    • В  сейчас остались закомментированные фрагменты выборов технологий (TECHNOLOGY_CHOICES) и устаревшее текстовое поле old_category_tag. Их стоит полностью удалить или перенести в миграции архива.
    • Единый источник истины для валют: Отображение валют ({'RUB': '₽', ...}) дублируется в методе модели get_price_display() и в админке category_price_display(). Лучше вынести его в словарь-константу модуля или использовать TextChoices.
  2. Исправление обработки ошибок в ServiceOrderView (views.py):

    • Если пользователь отправляет форму заказа с ошибкой (например, некорректный телефон), ServiceOrderView.post в  возвращает detail.html без дополнительных объектов (benefitsstepsfaqsprice_plansrelated_portfolio). Из-за этого при ошибке ввода страница услуги теряет свои тарифы и блоки.
    • Добавить вызов вспомогательного метода get_context_data() для гарантированного сохранения всех блоков страницы при ошибках валидации.
  3. Создание недостающего шаблона поиска:

    • В  есть класс ServiceSearchView, который ссылается на services/search.html, однако этого файла сейчас нет. Стоит добавить его или единовременно связать поиск с шаблоном каталога list.html.
  4. Интеграция писем с Celery в signals.py:

    • В  асинхронная отправка писем реализована через сырые потоки threading.Thread. Поскольку в проекте настроен Celery + Redis, отправку уведомлений о заказах надежнее перевести на Celery-таски (для защиты от потери писем при перезапуске сервера).

2. 🎨 UI/UX и модульность шаблонов (templates/services/)

  1. Декомпозиция шаблонов (Инклюды):

    • Сейчас  представляет собой большой монолитный файл. Чтобы сделать код понятным и простым, целесообразно вынести логические блоки в отдельные под-шаблоны:
      • templates/services/includes/_hero.html — главная шапка с иконкой, базовой ценой и CTA.
      • templates/services/includes/_price_plans.html — сетка тарифных планов (Базовый / Стандарт / VIP) с яркой подсветкой рекомендуемого тарифа.
      • templates/services/includes/_steps.html — пошаговый таймлайн проведения работ.
      • templates/services/includes/_faq.html — интерактивный аккордеон вопросов и ответов.
      • templates/services/includes/_order_modal.html — всплывающее или встроенное окно оформления заказа.
  2. Визуальная полировка карточек в list.html:

    • В  добавить плавные эффекты наведения (glow / hover lift), яркие теги для популярных услуг ("🔥 Хит"), стек используемых технологий в виде аккуратных микро-бейдж-иконок.

3. ⚙️ Удобство и чистота в Админке (admin.py)

  1. Вынос CSS из Python-кода:

    • В  многие цвета и стили заданы инлайновыми тегами style="...". Все эти стили лучше перенести в , оставив в Python только вызов нужных классов (например, .badge-status-new).
  2. Быстрые действия (Admin Actions):

    • Добавить экспорт списка заказов в CSV/Excel с фильтрацией по датам и быстрый перевод статусов в 1 клик прямо из списка.

📋 План реализации

Этап Задача Затронутые файлы
1. Refactoring Backend Удаление неиспользуемого кода, вынос констант валют, исправление передачи контекста при ошибке формы.
2. Celery Signals Перевод email-уведомлений на Celery-таски.
3. Templates Modularization Разбиение detail.html на инклюды, создание search.html. templates/services/*
4. UI & Admin Polish Очистка admin.py от HTML-хаков, вынос в CSS, улучшение карточек услуг. services.css

 

2
Я разработал детальный план по приведению приложения
Другое событие 00:45

Я разработал детальный план по приведению приложения 

к структуре и функционалу приложения .

Ключевые изменения:

  1. Расширение моделей Portfolio и PortfolioCategory: добавление стека технологий (Technology), уровня сложности, валют, краткого описания, индекса сортировки, популярности, сроков выполнения и связанных услуг.
  2. Новые сущностиPortfolioOrder (система заявок/заказов), PortfolioBenefit (преимущества), PortfolioStep (этапы работы), PortfolioFAQ (частые вопросы), PortfolioPricePlan (тарифные планы).
  3. Улучшение админ-панели: инлайны, цветные бейджи статистики, превью изображений, гибкие фильтры, экспорт заказов в CSV.
  4. Классовые представления (CBVs)PortfolioListView (с фильтрами, сортировкой по цене/просмотрам и пагинацией), PortfolioDetailView (атомарный счетчик просмотров, лендинговая структура), PortfolioOrderView и PortfolioSearchView.
  5. Сигналы и Celery: фоновые задачи отправки email-уведомлений клиенту и администратору при оформлении заказа.
  6. Обновление шаблонов: структура включений (includes/), лендинговая детальная страница, виджет заказа, интеграция с корзиной и поиск.