2
respostas

collectstatic

Boa tarde

Ao executar o comando "python manage.py collectstatic", está fazendo a cópia dos arquivos estáticos para a raiz do diretório. Sendo que quando executo estou no " (virtual) PS D:\Cursos Alura\Projetos Python\Aplicacao>" STATIC_ROOT = os.path.join(BASE_DIR, 'static')

At., Fabiano

2 respostas

Debugando encontrei o seguinte:

STATICFILES_DIRS ['D:/nome_do_projeto/static']

BASE_DIR WindowsPath('D:/Cursos Alura/Projetos Python/Django')

os.path.join(BASE_DIR, '/nome_do_projeto/static') 'D:/nome_do_projeto/static'

Pq no join ele concatena o D com o parametro passado?

O final do meu arquivo settings.py está com o seguinte código:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR, 'alurareceita/static'),
]
print(BASE_DIR, STATIC_ROOT, STATICFILES_DIRS)

Quando eu imprimi as três variáveis, obtive o seguinte resultado:

BASE_DIR = d:\alura\aplicacao
STATIC_ROOT = d:\alura\aplicacao\static
STATICFILES_DIR = ['D:\alura\aplicacao\alurareceita\static']

Se eu entendi direito, o STATIC_ROOT é o lugar onde são reunidos os arquivos estáticos de todas as aplicações do projeto após usarmos o comando python manage.py collectstatic. O STATICFILES_DIR apenas indica de onde o comando collectstatic vai obter os arquivos estáticos e copiar em seguida para STATIC_ROOT.

As concatenações (joins) deveriam comportar da mesma forma que você está vendo.

STATIC_ROOT referencia a pasta static FORA da pasta do projeto. STATICFILES_DIR referencia a pasta static DENTRO da pasta do projeto.

No fringir dos ovos, os templates vão usar o caminho de STATIC_ROOT. Mas o caminho do STATIC_ROOT só será preenchido com arquivos depois do comando collectstatic, que toma como parâmetro os diretórios referenciados em STATICFILES_DIR.

Espero ter ajudado.