Ao iniciar um projeto Django, o settings.py
arquivo não é uma solução viável se você tiver que implantar seu aplicativo em vários ambientes.
Uma solução é ter um settings
mó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 settings
aparê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.py
será considerado um ambiente independente do ambiente. Lembre-se de ajustar o manage.py
arquivo e o wsgi.py
arquivo 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)