我正在开发一个应用程序,它需要安装另一个应用。我可以将它添加到我的setup.py中,它也会安装其他应用程序。
安装应用程序后,我需要将其添加到INSTALLED_APPS,但我也需要添加外部应用程序。
是否有隐式传递其他应用程序的方法?
建议如何处理这种依赖关系,以避免在需要时要求用户添加多个应用程序?
如果不进行一些奇怪的黑客攻击,就没有办法做到这一点,也不应该有。用户应该知道他们在项目中添加了什么,以及需要什么依赖关系。记住Django的设计理念:
显式优于隐式
看看下面的一些应用程序。它们都需要CCD_ 1中的依赖性。他们在文档中明确表示,用户必须手动将其添加到项目中:
- 姜戈津尼亚
- Django Admin2
- Django Filer
- Django文件浏览器
有一个名为django-autoconfig的库可以让您做到这一点。基本上,您在应用程序中包含一个autoconfig.py
,如果您的应用程序包含在INSTALLED_APPS
中,则加载它的autoconfig.py
。
文件应该看起来像这样:
SETTINGS = {
'INSTALLED_APPS': [
'external_app_1',
'external_app_2',
],
}
阅读文档,了解更多关于订购的信息以及类似的高级内容。