Обновить

Комментарии 5

Необходимость делать миграцию ради кнопки "Наверх" это, конечно, круто!

На мой взгляд, оптимальным решением является создавать кнопку "Наверх" динамически с помощью JavaScript. На крайний случай, код кнопки можно вставить в базовый шаблон.

Согласен: если нужна одна статичная кнопка «Наверх», я бы тоже не стал ставить отдельный пакет с миграциями. Ссылка в базовом шаблоне или небольшой JavaScript здесь проще и правильнее.

Я рассматривал вариант, где всё настраивается только через settings.py и миграции не нужны. Но у кнопки довольно быстро набирается много параметров: отдельные настройки для сайта и админки, положение, размеры, мобильные переопределения, цвета и состояния, иконки, порог показа, поведение при прокрутке, столкновения с чатами и баннерами, настройки скрытия пользователем.

В итоге получился бы большой словарь в настройках проекта, который всё равно меняется только разработчиком и требует выкладки при каждой правке дизайна.

Поэтому для текущего варианта я выбрал конфигурацию в базе и Django Admin. Миграция делается один раз при установке, зато дальше кнопку можно менять без поиска кода: например, дизайнером или администратором сайта с нужными правами. Это удобно, когда изменили дизайн, добавили чат или cookie-баннер, а разработчик, который когда-то собирал интерфейс, уже не занимается этим проектом.

То есть пакет не пытается заменить пару строк JS в простом случае. Он рассчитан на сценарий, где кнопка становится настраиваемым компонентом сайта.

А вариант облегчённого режима без БД действительно имеет смысл. Если будет спрос на такой способ подключения, его можно сделать отдельным режимом с настройками через settings.py.

А миграция зачем нужна ? Так и не понял

В статье написано, что настройки кнопки сохраняются в базе. А еще можно настроить на разных страницах, разные кнопки, для этого тоже наверное база данных используется.

Да, именно для хранения конфигурации.

Миграция создаёт модели для профилей и ревизий настроек: отдельная конфигурация для сайта и Django Admin, черновики, публикация, откат, параметры внешнего вида и поведения, загруженные SVG-иконки.

При подключённом django.contrib.sites можно также сделать отдельный профиль для конкретного Site с общей конфигурацией как запасным вариантом.

Для простой статичной кнопки это, конечно, избыточно — её проще добавить вручную. Здесь база нужна именно потому, что пакет рассчитан на настраиваемый компонент, который потом можно менять через админку без правок кода.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации