我想知道一个好的方法,或者编程“模式”来应用,允许我的 Django 应用程序的用户为我的应用程序添加“插件”或“扩展”,而不必添加任何东西到“已安装”应用程序或编辑任何配置。
WordPress 插件可能是最好的例子。新的选项/设置/菜单可用,但我不必编辑 WordPress 配置或核心文件 - 它们只会显示在我的管理员中。
在 Django/Python 中,您会使用什么方法或编程“模式”来开始开发一种插件架构?
我知道 WordPress(给出的示例)本身就是一个“平台”,并提供插件 API 等。我的问题是关于所涉及的模式以及早期阶段 - 之前 构建应用程序,而不是稍后尝试添加该功能。
具体来说,我的应用程序接受“内容”,我想为用户提供一种方法,让他们加入模块化“变形金刚”,为该内容提供附加输出(不仅仅是过滤器)可能需要也可能不需要接受一些基本设置。
最佳答案
我的建议是使用 Django 信号系统。您的应用程序应该在某些操作发生时发送信号,然后在下一阶段发生时收听它们。如果有人想要更改您的应用的行为,他们所需要做的就是收听您的应用发出的相关信号并适本地修改数据。
这允许非常轻松地扩展和更改应用程序,甚至无需接触您的应用程序源代码。
但我要指出一点,如果有人正在使用您的应用程序,则它不太可能安装在项目文件夹中,因此要求他们将代码放置在您的应用程序文件夹中不是一个好主意。它很可能会作为一个模块安装在 virtualenv 中。使用我在上面概述的信号方法,使用您的应用程序的人只需在他们的项目中的应用程序中添加处理程序,将处理程序放入其中最有意义。因此他们永远不需要触及您的应用程序源代码目录。
关于python - 允许我的 Django 应用程序使用不需要更改配置的 "third party"插件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890971/