我有一个django项目,由客户在他们的服务器上安装.我还有一些应用程序,它们是可以安装/卸载的可选功能插件.
我想要一个简单的方法来打包这些插件应用程序,使安装/卸载无痛.我不希望他们将模板文件复制到一个目录,将app复制到另一个目录,将媒体复制到第三个目录,依此类推.我宁愿他们不需要编辑settings.py,但如果它没有帮助就可以.
理想的情况是,如果他们可以简单地解压缩到python路径上的某个位置(可能是一个特殊的插件目录?),并将其删除以卸载.是否有一种简单的方法来打包应用程序,以便以这种方式安装它们?
我将跳过对 Python 打包(distutils、setuptools、pip 等)的讨论,因为听起来您更喜欢使用简单的 zip 文件或 tarball。我将逐一解决您提到的“痛点”:
模板文件:只要您的项目的 TEMPLATE_LOADERS 设置中包含“django.template.loaders.app_directories.load_template_source”,您就不必担心这一点。您的每个应用程序都可以有一个“templates/”子目录,其中的模板将被加载,就像它们位于项目范围的模板目录中一样。
媒体文件:应用媒体是一种痛苦。对于开发,您可以使用自定义的serve_media视图,其操作类似于app_directories模板加载器(在每个应用程序中查找媒体)。在生产中,您必须复制文件、使用符号链接或使用网络服务器级别名。有几个实用程序应用程序试图解决这个问题;我现在使用django-staticfiles。
编辑 settings.py:没有简单的方法可以解决这个问题。为了使其模型、模板标签、管理命令等正常工作,应用程序必须列在 INSTALLED_APPS 中。您可以做的是在 settings.py 中编写一些自定义代码,列出某个目录的内容,并将在那里找到的包动态添加到 INSTALLED_APPS 中。有点危险(仔细考虑谁有权将文件放入该目录,因为他们拥有您王国的钥匙),并且只有在服务器重新加载时才会检测到那里的新文件,但它应该可以工作。
我认为如果你把这些解决方案放在一起,就有可能实现你理想的情况:解压安装,删除卸载。
| 归档时间: |
|
| 查看次数: |
1355 次 |
| 最近记录: |