我试图为django构建一个reusbale包,该包包含多个应用程序,因为项目非常大。
所以,结构,有app文件夹,里面有多个应用程序支付,产品,帐户等。
在尝试使项目可重用时,我在源项目的不同位置创建了它,并在源项目中执行了根文件夹的符号链接。
现在,当我想安装应用程序时,我必须在INSTALLED_APPS中逐一编写它们
INSTALLED_APPS = ('PACKAGE.apps.store',
'PACKAGE.apps.product',
'PACKAGE.apps.delivery',
'PACKAGE.apps.payment',
'PACKAGE.apps.store',
'PACKAGE.apps.cart',
'PACKAGE.apps.tax')
有没有办法,我只能包括' PACKAGE'在我安装的应用程序中,也许使用包init来加载其他模块?
我尝试在PACKAGE/__init__.py
from django.conf import settings as user_settings
from PACKAGE.conf import settings
user_settings.INSTALLED_APPS = user_settings.INSTALLED_APPS + settings.INSTALLED_APPS
但它没有用,任何人都可以就此提出建议吗?
答案 0 :(得分:1)
我相信一旦"来自django.conf导入设置"行已执行,设置实际上是不可变的。
我要做的是将逻辑反转一下。在PACKAGE / __ init__.py中。类似的东西:
def get_apps():
apps = (
'apps.store',
'apps.other',
...
)
return [__name__ + '.' + x for x in apps]
然后只是:
INSTALLED_APPS += get_apps()
在settings.py中。我这样做了很多,以保持我们的settings.py可管理,它似乎工作得很好。