Комментарии 5
Необходимость делать миграцию ради кнопки "Наверх" это, конечно, круто!
На мой взгляд, оптимальным решением является создавать кнопку "Наверх" динамически с помощью JavaScript. На крайний случай, код кнопки можно вставить в базовый шаблон.
Согласен: если нужна одна статичная кнопка «Наверх», я бы тоже не стал ставить отдельный пакет с миграциями. Ссылка в базовом шаблоне или небольшой JavaScript здесь проще и правильнее.
Я рассматривал вариант, где всё настраивается только через settings.py и миграции не нужны. Но у кнопки довольно быстро набирается много параметров: отдельные настройки для сайта и админки, положение, размеры, мобильные переопределения, цвета и состояния, иконки, порог показа, поведение при прокрутке, столкновения с чатами и баннерами, настройки скрытия пользователем.
В итоге получился бы большой словарь в настройках проекта, который всё равно меняется только разработчиком и требует выкладки при каждой правке дизайна.
Поэтому для текущего варианта я выбрал конфигурацию в базе и Django Admin. Миграция делается один раз при установке, зато дальше кнопку можно менять без поиска кода: например, дизайнером или администратором сайта с нужными правами. Это удобно, когда изменили дизайн, добавили чат или cookie-баннер, а разработчик, который когда-то собирал интерфейс, уже не занимается этим проектом.
То есть пакет не пытается заменить пару строк JS в простом случае. Он рассчитан на сценарий, где кнопка становится настраиваемым компонентом сайта.
А вариант облегчённого режима без БД действительно имеет смысл. Если будет спрос на такой способ подключения, его можно сделать отдельным режимом с настройками через settings.py.
А миграция зачем нужна ? Так и не понял
В статье написано, что настройки кнопки сохраняются в базе. А еще можно настроить на разных страницах, разные кнопки, для этого тоже наверное база данных используется.
Да, именно для хранения конфигурации.
Миграция создаёт модели для профилей и ревизий настроек: отдельная конфигурация для сайта и Django Admin, черновики, публикация, откат, параметры внешнего вида и поведения, загруженные SVG-иконки.
При подключённом django.contrib.sites можно также сделать отдельный профиль для конкретного Site с общей конфигурацией как запасным вариантом.
Для простой статичной кнопки это, конечно, избыточно — её проще добавить вручную. Здесь база нужна именно потому, что пакет рассчитан на настраиваемый компонент, который потом можно менять через админку без правок кода.

Django-кнопка «Наверх»: подключить за минуту вместо очередного велосипеда