使用Fabric进行INSTALLED_APPS的本地设置

时间:2012-02-22 09:54:44

标签: django fabric

我有一个应用程序(django-compressor),我只想在本地计算机而不是服务器上运行。

我知道
try:
    from local_settings import *
except ImportError:
    pass 

特技。但我想知道是否有更好的方法来删除应用程序我只想使用Fabric INSTALLED_APPSsettings.py本地运行。

4 个答案:

答案 0 :(得分:9)

我认为你提到的标准方法是最好的;创建一个包含三个设置文件的文件夹settings; shared.pyproduction.pydevelopment.py。所有应用实例通用的设置都放在shared.py中,并且是从production.pydevelopment.py导入的。然后,您只需在开发设置中轻松添加compressor

<强> shared.py

INSTALLED_APPS = (...)

<强> development.py

from settings.shared import *
INSTALLED_APPS += ('compressor',)

您需要确保在开发时使用development.py设置文件运行开发服务器:

python manage.py --settings=settings.development 

并且类似地在您的生产服务器上为production.py做同样的事情(这取决于您的实施)

从长远来看,这是一种更好的方法,因为您也可以指定单独的缓存,数据库,搜索等设置。

除此之外,而不是从已安装的应用中完全删除compressor,您只需启用和停用即可使用COMPRESS_ENABLED设置

答案 1 :(得分:6)

你也可以用另一种方式来做。

所有共享设置都在settings.py中,并在local_settings中保持不同。在您的情况下,它是INSTALLED_APPS,您可以将导入部分更改为以下内容:

DEV_APPS = None
try:
    from local_settings import *
    INSTALLED_APPS += DEV_APPS
except:
    PASS

这是你的local_settings.py:

DEV_APPS = ('compressor',)

答案 2 :(得分:1)

我的方法是将原始settings.py(由./manage.py startproject制作)重命名为base_settings.py。这样,所有基线设置都在base_settings.py

然后,我将创建一个新的settings.py文件,该文件仅包含base_settings.py所需的特定于环境的修改和覆盖。

因此,要使用我的方法回答您的问题,我的settings.py将是这样的:

from .base_settings import *

INSTALLED_APPS += ('compressor',)

然后,settings.py将添加任何必要的特定于环境的设置。

使用这种方法,我在调用--settings或设置./manage.py时不需要指定DJANGO_SETTINGS_MODULE参数。

让我更轻松地管理不同的环境。

注意:我使用git并向此settings.py添加.gitignore

答案 3 :(得分:0)

  

以添加调试工具为例。   Django == 2.1.7

# proj/settings/defaults.py
....

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    # apps
    'apps.document.apps.DocumentConfig',
]
# proj/settings/dev.py

DEBUG = True
from .defaults import *

INSTALLED_APPS += ['debug_toolbar']
# proj/urls.py
if settings.DEBUG:
    import debug_toolbar

    urlpatterns = [
                      path('__debug__/', include(debug_toolbar.urls)),
                  ] + urlpatterns

./manage.py runserver --settings=proj.settings.dev