Problemas com serviços estáticos no django!
- #Django
- #Python
Servir os arquivos estáticos no Django as vezes não parece um trabalho fácil.
Pois o framework não se dá o trabalho de fornecer essa funcionalidade para a gente. Algumas opções que temos para resolver esse problema, seguindo a documentação oficial do Django, são basicamente:
- Configurar o nosso servidor web (Apache ou Nginx) para servir esses arquivos;
- Utilizar serviços de terceiros, como a Amazon S3.
Porém, estou aqui para indicar outro serviço, muito bom por sinal o WhiteNoise.
O que é WhiteNoise ?
O WhiteNoise serve os arquivos estáticos de forma campactadas com gzip e cuida de adicionar ao cabeçalho da requisição caches desses arquivos, para que sua aplicação não abra mão da performance por estar servindo os arquivos estáticos por ela mesma.
Como utilizar:
- Instalamos através terminal.
- Lembre-se de estar com a 'venv' ativada.
pip install whitenoise
Adicionamos a seguinte linha no arquivo de settings.py:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
]
Certifique-se que o WhiteNoise seja adicionado acima de todos os middlewares do Django, exceto o de security.
Por fim,adicionamos a seguinte linha abaixo de STATIC_URL e STATIC_ROOT :
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Pronto! Agora é só dar um collectstatic e seja feliz sem complicações e estresse para configurar.