在django建造可重复使用的包裹

时间:2014-03-22 11:22:42

标签: python django

我试图为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

但它没有用,任何人都可以就此提出建议吗?

1 个答案:

答案 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可管理,它似乎工作得很好。