Из моего опыта развертывания многих приложений Django в производство наилучшим подходом было бы разделение настроек на разные модули.Это также очень хорошо описано в Два совка Джанго в главе Using Multiple Settings Files
.
settings/
base.py
local.py
stage.py
production.py
local
, stage
, production
наследуются от base
.
Например local.py
:
from .base import *
DEBUG = True
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db_name',
'HOST': 'localhost',
}
}
INSTALLED_APPS += ['debug_toolbar', ]
BASE_URL = 'http://localhost:8080/'
Например production.py
:
from .base import *
DEBUG = False
...
BASE_URL = 'https://example.com'
Например stage.py
:
from .base import *
DEBUG = False
BASE_URL = 'https://stage.example.com'
После этого вы можете просто установить BASE_URL
для каждой конкретной среды в каждом файле настроек и получать доступ с settings.BASE_URL
везде, где вы хотите.
If сделает вашу жизнь намного проще и позволит настраивать ваши настройки в зависимости от средыочень динамично.