Устанавливайте приложения Django через админ-сайт Django, как плагины в Wordpress

Я хочу реализовать модуль-менеджер в Django, где сторонние модули могут быть установлены через интерфейс администратора django (без изменения кодовой базы основного проекта).

Эти модули должны обладать теми же возможностями, что и приложение django. Например, определять модели и представления, делать миграции и взаимодействовать с другими приложениями. Подобно тому, как это работает с менеджером плагинов в Wordpress.

Есть ли хороший способ сделать это? (и есть ли причины, почему я не должен этого делать?)

Что такое приложение Django? Согласно Django Packages

Небольшие компоненты, используемые для сборки проектов. Приложение - это все, что устанавливается путем размещения в settings.INSTALLED_APPS.

.

В общем случае, вот шаги для того, чтобы приложение работало в Django

  1. Установите приложение

    pip install app
    
  2. Зарегистрируйте приложение в своем settings.py

    .
    INSTALLED_APPS = [
        ...
        'app',
        ...
    ]
    
  3. В некоторых случаях потребуется синхронизировать базу данных. Таков случай с social-auth-app-django. Здесь вам придется сделать также

    .
    python manage.py migrate
    
  4. В некоторых других случаях они требуют определенных версий Python, Django, ect, так что это тоже нужно учитывать. Например, в случае с Django REST framework, который требует

    Python 3.6+
    Django 4.1, 4.0, 3.2, 3.1, 3.0
    
  5. Возможно также, что приложения зависят от определенных библиотек Python. Тогда их тоже придется установить.

    .

Для базовой версии этого, нужно создать место, где будет кнопка для установки приложения, а также модель для хранения приложения. Модель будет отслеживать конкретные вариации с BooleanField.

Точнее, поскольку мы теперь знаем, что некоторые приложения требуют синхронизации базы данных, в модели приложения будет requires_db_sync = BooleanField(default=False). Тогда, если это так, при установке этого приложения нужно будет выполнить по крайней мере шаги 1, 2 и 3.


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


Я тоже работаю с WordPress, и такая мысль приходила мне в голову несколько лет назад. Я не стал ее реализовывать, потому что для большинства приложений мне все равно приходилось лезть в код и выполнять различные настройки. Чтобы справиться с этим, плагины WordPress, такие как WPForms, поставляются со страницами, где можно выполнить такую настройку. Поскольку таких страниц для конфигурации приложений Django пока не существует, их также придется создать. Кроме того, было бы здорово иметь доверенное агентство со стандартами для подтверждения того, что приложение подходит для этой системы.

Вернуться на верх