Разрешить сторонние плагины для моего приложения Django, которые не требуют изменений в конфигурации? - PullRequest
2 голосов
/ 03 февраля 2011

Я хотел бы знать о хорошем подходе или применении «шаблона» программирования, позволяющего пользователям моего приложения Django добавлять «плагины» или «расширения» для моего приложения, не добавляя ничего к «установленному»приложения или редактировать любую конфигурацию.

Плагин WordPress, вероятно, является лучшим примером.Новые опции / настройки / меню становятся доступными, но мне не нужно редактировать конфигурацию WordPress или файлы ядра - они просто отображаются у моего администратора.

В Django / Python какой подход или шаблон программирования вы бы использовали, чтобы начать разработку типа архитектуры плагинов?

Я знаю этот WordPress (пример(дано) является самой «платформой» и предоставляет API для плагинов и т. д. Мой вопрос касается задействованных шаблонов и ранних этапов - подготовки к плагинам до создания приложения, а не попытки добавленияэта функциональность позже.

Если говорить точнее, мое приложение принимает «контент», и я хотел бы предоставить пользователям возможность добавлять модульные «преобразователи», которые обеспечивают дополнительные выходные данные этого контента (непросто фильтр), который может или не может принять несколько основных настроек.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

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

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

Я хотел бы подчеркнуть, что если кто-то использует ваше приложение, оно вряд ли будет установлено в папку проекта, поэтому требовать от него размещения кода в папке ваших приложений - плохая идея. Скорее всего, он будет установлен как модуль в virtualenv. Используя метод сигналов, который я описал выше, человек, использующий ваше приложение, может просто добавить обработчики в приложение в своем проекте, в которые имеет смысл поместить обработчики. Таким образом, им никогда не нужно трогать каталог исходного кода вашего приложения.

0 голосов
/ 18 ноября 2012

В pypi есть django-плагины, которые позволяют вам определять "точки плагинов", что упрощает использование в вашем приложении плагинов.

См .: http://pypi.python.org/pypi/django-plugins

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...