Python Decouple ?
O python decouple, mais conhecido somente por decouple, serve para criarmos um arquivo com todas as configurações sensíveis do projeto como login e password do banco de dados, no Django a sua SECRET_KEY, as suas variáveis de acesso do AmazonS3 e qualquer outra informação que possa variar entre o ambiente de desenvolvimento e produção.
O decouple procura por variáveis setadas no ambiente, caso não encontre nas variáveis de ambiente ele irá procurar por um arquivo .env onde as variáveis deverão estar setadas.
Por exemplo, no Django, a variável SECRET_KEY não deve ser exposta publicamente (via git ou qualquer controle de versão), então podemos mascarar ela dentro de settings.py:
# em settings.py
SECRET_KEY = config('SECRET_KEY')
E criamos um arquivo .env na mesma pasta do manage.py
SECRET_KEY=1c&rge8ac9dq)y62z&u3=a4td=hb)d3(fc*w4rm3_=hw50tuvr
Agora este arquivo .env deverá ir para o .gitignore pois ele nunca deve ser ‘commitado’.
Com isso o decouple irá setar a variável quando o projeto rodar procurando pela variável primeiro nas variáveis de ambiente e caso não encontre irá procurar no .env. Como este aquivo .env não irá para o controle de versão, no servidor de produção precisamos setar a variável de ambiente SECRET_KEY ou criamos um arquivo .env direto no servidor.
Instalação
Para instalar o decouple basta digitar:
# no terminal com virtualenv ativo
pip install python-decouple
E adicionar em requirements.txt:
python-decouple
Utilizando o Decouple
Para utilizar o decouple será necessário criar um arquivo .env na mesma pasta do manage.py (Django), e adicionar este arquivo ao .gitignore.
Para mascarar a variável DEBUG, vamos em settings.py:
# em settings.py
from decouple import config
...
DEBUG = config('DEBUG', default=False, cast=bool)
e no arquivo .env:
# em .env
DEBUG=True
Note que no arquivo .env não pode haver espaços.
Como o decouple procura primeiro nas variáveis de ambiente, se você executar o seguinte comando:
# no terminal (linux - Mac)
DEBUG=False python manage.py runserver
Não importa o que esteja setado no .env, a variável de ambiente irá ser prioritária e o decouple não irá procurá-la no arquivo .env.
Agora com isso você poderá mascarar qualquer variável sensível de forma simples e rápida!