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

Por que static não funciona no STATIC_ROOT?

Eu segui o vídeo e deu um erro: You have requested to collect static files at the destination location as specified in your settings.

This will overwrite existing files! Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel:

Fui caçar a resposta e sugeriram trocar: STATIC_ROOT = os.path.join(BASE_DIR, 'static') // Modo do vídeo Por isso: STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

Funcionou! Sabem me dizer o porquê? Por favor!

Obrigado

2 respostas
solução!

Olá, Mauricio! Como vai?

O Django usa a configuração STATIC_ROOT para saber onde colocar os arquivos quando você executa o comando collectstatic. Esse comando pega todos os seus arquivos estáticos das aplicações instaladas e os coloca no diretório definido em STATIC_ROOT.

No seu caso, você inicialmente definiu STATIC_ROOT = os.path.join(BASE_DIR, 'static'), o que significa que o Django vai colocar os arquivos estáticos na pasta 'static' na raiz do seu projeto quando você executa collectstatic.

O erro que você encontrou é porque o Django estava tentando sobrescrever alguns arquivos que já existiam na pasta 'static'. Isso pode acontecer se você já tiver alguns arquivos estáticos nessa pasta que foram colocados lá manualmente, ou se você executou collectstatic mais de uma vez.

Quando você mudou para STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles'), você está dizendo ao Django para colocar os arquivos estáticos em uma pasta chamada 'staticfiles' em vez de 'static'. Se essa pasta não existia antes, ou estava vazia, então não haveria nenhum arquivo para sobrescrever e você não veria o erro.

Então, a razão pela qual a mudança funcionou é provavelmente porque a pasta 'staticfiles' estava vazia ou não existia, enquanto a pasta 'static' já tinha alguns arquivos que o Django estava tentando sobrescrever.

Espero ter ajudado e bons estudos!

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

Não vi o alerta da resposta. Obrigado!