我有一个应用程序(django-compressor),我只想在本地计算机而不是服务器上运行。
我知道try:
from local_settings import *
except ImportError:
pass
特技。但我想知道是否有更好的方法来删除应用程序我只想使用Fabric INSTALLED_APPS
从settings.py
本地运行。
答案 0 :(得分:9)
我认为你提到的标准方法是最好的;创建一个包含三个设置文件的文件夹settings
; shared.py
,production.py
和development.py
。所有应用实例通用的设置都放在shared.py
中,并且是从production.py
和development.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