【问题标题】:Adding several apps to INSTALLED_APPS at once一次将多个应用程序添加到 INSTALLED_APPS
【发布时间】:2016-02-23 09:14:49
【问题描述】:

我正在开发一个需要安装另一个应用程序的应用程序。我可以将它添加到我的 setup.py 中,它也会安装其他应用程序。

安装我的应用程序后,我需要将其添加到 INSTALLED_APPS,但我也需要添加外部应用程序。

有没有办法隐式传递其他应用程序?

处理这种依赖关系的推荐方法是什么,以避免在需要时要求用户添加多个应用程序?

【问题讨论】:

  • 你的问题对我来说不是很清楚。如果你需要在INSTALLED_APPS中添加一个应用名称,那么只需在settings.py文件中添加它,对吧?为什么其他用户可以将应用添加到您的项目中?
  • 我的意思是,我需要添加“my_app”,但 my_app 需要一些其他外部应用程序,所以我也需要添加它。我的问题是是否有办法隐式添加第二个。
  • INSTALLED_APPS 是 settings.py 文件中的一个元组,您可以添加任意数量的应用程序。例如,我的看起来像 INSTALLED_APPS = ('south', 'mptt', 'guardian', 'tastypie', ....) docs.djangoproject.com/en/1.8/ref/settings/#installed-apps
  • 您可以使用django-autoconfig 来实现这一点。

标签: python django django-settings django-apps


【解决方案1】:

如果不进行一些奇怪的黑客攻击,就没有办法做到这一点,也不应该这样做。用户应该知道他们在项目中添加了什么以及需要哪些依赖项。记住Django's design philosophy

显式优于隐式

看看以下一些应用。它们都需要INSTALLED_APPS 中的依赖关系。他们在文档中明确说明用户必须手动将它们添加到他们的项目中:

【讨论】:

  • 是的,只是好奇是否有一个不错的替代方案来实现 xD
【解决方案2】:

有一个名为django-autoconfig 的库可让您执行此操作。您基本上在您的应用程序中包含一个autoconfig.py,如果您的应用程序包含在INSTALLED_APPS 中,它的autoconfig.py 已加载。

文件应如下所示:

SETTINGS = {
    'INSTALLED_APPS': [
        'external_app_1',
        'external_app_2',
    ],
}

阅读文档以获取有关订购和更高级类似内容的更多信息。

【讨论】:

  • 听起来不错,但是需要对用户项目进行额外设置。我想要的是一种不强迫我的应用程序用户添加任何其他依赖项的方法。
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多