Configurações específicas do Django por ambiente

Ao iniciar um projeto Django, o settings.pyarquivo não é uma solução viável se você tiver que implantar seu aplicativo em vários ambientes.

Uma solução é ter um settingsmódulo no diretório raiz do projeto, onde você escolherá o arquivo de configurações correto, dependendo do ambiente em que estiver.

Aqui está a settingsaparência do módulo

project_root
|__media
|__your_project
|____init__.py
|__urls.py
|__wsgi.py
|__app1
|__app2
|__static
|__settings
|____init__.py
|__base.py
|__local.py
|__local.py.dist
|__other_env.py
|__manage.py

Tudo o que você colocar base.pyserá considerado um ambiente independente do ambiente. Lembre-se de ajustar o manage.pyarquivo e o wsgi.pyarquivo para manter o arquivo de configurações correto

em manage.py, substitua as linhas imediatamente apósif __name__ == "__main__"

env = os.environ.get('DJANGO_ENV') or 'local'
os
.environ.setdefault("DJANGO_SETTINGS_MODULE", '.'.join(['settings', env]))

e a mesma coisa para wsgi.py

Os arquivos específicos do ambiente terão o seguinte formato, considere, por exemplo local.py

from .base import *

DATABASES
= {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

# other settings here
# ...

Lembre-se: exclua esses arquivos de configurações de env do controle de versão;) (mantenha um arquivo .dist como um projeto)