Quem nunca deu aquele velho clone em um repositório no github e percebeu que não deixaram a SECRET_KEY pública?
Mas é isso mesmo! A SECRET_KEY sempre deve ser privada. NINGUÉM, além de você, deve ter acesso aquela belezinha de 50 caracteres.
Por quê?
O Django usa a SECRET_KEY para gerenciar algumas issues de segurança na nossa aplicação. Por exemplo, o Django faz a criptografia das senhas dos usuários baseado também na SECRET_KEY, cria aquelas URLs únicas de reset da senha do usuário, além de outras coisinhas na sessão, cookie e etc. Recomendo ler a documentação.
Dito isso, devemos estar cientes que a SECRET_KEY nada mais é que uma String. Então, se você clonar um projeto e colocar a SECRET_KEY com o valor 'a'. Vai funcionar!
É a maneira mais segura? Definitivamente não kkkkk
Qual é a solução?
Você pode gerar 50 caracteres aleatórios (padrão do Django) e adicionar como valor da sua chave secreta.
Mas, existe uma função já pronta do Django que nos traz uma SECRET_KEY. É a função get_random_secret_key do pacote django.core.management.utils. O código dela tá aqui.
É bastante simples. Você pode fazer um script que retorna isso no terminal. Por exemplo:
# generate_secret_key.py
from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())
E no terminal:
python generate_secret_key.py
Você também pode executar todo o conteúdo do arquivo generate_secret_key no próprio terminal, sem precisar criar um arquivo, abrindo o console interativo do python.
Ou, se preferir, você pode executar tudo através da opção -c (cmd) do Python. Essa opção executa algum programa passado por String.
O código anterior produz o mesmo resultado que esse:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
Pode mostrar essa para aquele seu amigo que diz que Python não tem ponto e vírgula hehehehe.
O ponto e virgula serve pra você indicar a finalização de um comando em python (quando você tem mais de uma instrução por linha).
Xero.
Foto da capa: Philipp Katzenberger on Unsplash.