Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Uma dúvida com relação a SECRET_KEY

Fiz a importação do projeto conforme demonstrado no vídeo "Preparando ambiente" e tudo funcionou. Mas fiquei com uma dúvida com relação a SECRET_KEY.

Vimos no módulo anterior que devemos guardá-la no arquivo .env que não deve ser enviado ao GitHub.

A dúvida é a seguinte: quando importei o projeto do GitHub, o arquivo .env não veio e nem a SECRET_KEY, conforme era esperado. No entanto, como o projeto na minha máquina funciona sem a SECRET_KEY? Onde ela está?

6 respostas

Olá, Fábio! Tudo joia?

Que bom que você está avançando no curso! A sua dúvida é bastante pertinente.

Quando você importa um projeto do GitHub e o arquivo .env não está presente, o Django pode estar utilizando uma SECRET_KEY que está definida diretamente no arquivo settings.py. Isso é comum em projetos de exemplo ou em ambientes de desenvolvimento, onde a SECRET_KEY pode ser definida diretamente no código para facilitar a configuração inicial.

Dê uma olhada no seu arquivo settings.py e procure por algo como:

SECRET_KEY = 'sua_secret_key_aqui'

Se você encontrar essa linha, significa que a SECRET_KEY está sendo definida diretamente no arquivo de configurações do Django, e é por isso que o projeto está funcionando sem o arquivo .env.

Para seguir as boas práticas de segurança, especialmente em ambientes de produção, é recomendado mover essa SECRET_KEY para um arquivo .env e garantir que ele não seja enviado ao GitHub. Você pode fazer isso utilizando a biblioteca python-decouple ou outra similar para gerenciar as variáveis de ambiente.

Aqui está um exemplo de como você pode ajustar o seu settings.py para usar uma SECRET_KEY do arquivo .env:

  1. Instale a biblioteca python-decouple:

    pip install python-decouple
    
  2. Crie um arquivo .env na raiz do seu projeto (não esqueça de adicioná-lo ao .gitignore):

    SECRET_KEY=sua_nova_secret_key
    
  3. Modifique o seu settings.py para usar a SECRET_KEY do arquivo .env:

    from decouple import config
    
    SECRET_KEY = config('SECRET_KEY')
    

Dessa forma, sua SECRET_KEY ficará segura e não será exposta no repositório do GitHub.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Primeiramente, obrigado pelo retorno.

Dei uma olhada no arquivo settings.py e ao procurar pela SECRET_KEY encontrei o seguinte trecho de código SECRET_KEY = str(os.getenv('SECRET_KEY')), tal como foi ensinado no curso anterior, utilizando o dotenv. Mas não encontro o arquivo .env e continou sem entender como tudo funciona perfeitamente sem essa informação.

Opa, Fábio, bom dia!

O arquivo .env por padrão não é levado para um ambiente público, como um repositório, por exemplo, pois ele contém informações sensíveis como senhas e chaves, como é o seu caso.

Então, em vez de subir um arquivo .env com informações importantes para um repositório, é comum subir um arquivo .env-example que vai conter o nome das variáveis que você está utilizando e servirá de exemplo para criar um arquivo .env quando você fizer um clone do repositório.

O seu arquivo .env-example deve conter apenas a variável sem o valor, por exemplo:

SECRET_KEY=

Logo, no seu projeto você mesmo cria um arquivo .env e utiliza o .env-example como modelo para criá-lo, para depois adicionar as informações sensíveis no mesmo.

Espero ter esclarecido esse ponto, caso tenha mais dúvidas estarei à disposição!

Fala, Armano! Bom dia!

Compreendi bem que não devemos enviar a SECRET_KEY para um repositório público. Vou detalhar o que fiz, talvez fique mais fácil de me ajudar.

Iniciei o curso Django: persistência de dados e Admin. No primeiro módulo, existe a atividade 02 Preparando o ambiente, que nos encaminha para o projeto desenvolvido no último curso: https://github.com/alura-cursos/alura_space/tree/aula_5

Baixei o projeto como zip e terminei a configuração. Tudo funcionou perfeitamente! Minha dúvida é como isso foi possível já que não tenho o arquivo .env na minha máquinha com a SECRET_KEY.

solução!

Bom dia, Fábio!

Agora compreendi a sua dúvida! Isso acontece porque essa SECRET_KEY é importante e necessária para um projeto Django que esteja em produção, logo, como você rodou localmente o projeto e não fez o deploy do mesmo, não há problema em não ter a SECRET_KEY.

Caso tenha mais dúvidas estarei à disposição!

Obrigado pela paciência e explicação, Armano!