2

Configuração Arquivos estáticos - Django

#Django #Python
Thiago Souza
Thiago Souza

Versões LTS (Long-term support), são versões de software que tem como objetivo proporcionar suporte por um longo período, oferecendo assim uma maior estabilidade para os softwares em questão.

A versão 3.2 do Django foi disponibilizada como sua mais nova versão LTS, sendo assim altamente recomendada para os desenvolvedores, porém o Django alterou a biblioteca padrão de gerenciamento de Sistema Operacional, antes so, agora pathlib, e consequentemente leves mudanças na maneira de configurar partes do projeto.

Aos que quiserem se aventurar nesta nova biblioteca (pathlib) e não quiserem retornar a antiga (so), este artigo tem como objetivo auxiliar a configuração de arquivos estáticos no arquivo settings.py, visto que alguns desenvolvedores encontram dificuldades e por isso acabam retornando à boa biblioteca so.


Há duas formas clássicas de realizar essa configuração, a primeira seria concatenando a variável BASE_DIR à string representando o diretório a ser criado.

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/


STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles' 
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media

A segunda seria utilizando o método joinpath, presente no objeto Path, no qual a variável PATH_LIB está instânciada.

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/


STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR.joinpath('staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR.joinpath('media')


Porém em ambos os casos, as variáveis(STATIC_URL,STATIC_ROOT, MEDIA_URL, MEDIA_ROOT), contendo a representação de rotas e diretórios para estes arquivos estáticos, são do tipo objeto Path, assim podendo entrar em conflito com outras configurações de bibliotecas que utiliza-as, aceitando somente tipo str, formato no qual a biblioteca so atribui a estas variáveis com o método os.path.join.


Para resolver esta questão, convertemos os tipos através do método str e deixamos as variáveis aptas para o uso devido.

Convertendo no primeiro caso:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/


STATIC_URL = '/static/'
STATIC_ROOT = str(BASE_DIR / 'staticfiles') 
MEDIA_URL = '/media/'
MEDIA_ROOT = str(BASE_DIR / 'media)

Convertendo no segundo caso:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/


STATIC_URL = '/static/'
STATIC_ROOT = str(BASE_DIR.joinpath('staticfiles')) 
MEDIA_URL = '/media/'
MEDIA_ROOT = str(BASE_DIR.joinpath('media'))


Espero ter ajudado aos que encontraram conflito com esta configuração, até a próxima.

0
12

Comentários (1)

1
Rogério Martins

Rogério Martins

19/08/2021 23:12

Obrigado pela excelente dica!

Back-End Developer Jr, caminhando ao Fullstack, inciante em Ciência e Engenharia de Dados. Aprendiz na arte da poesia.

Brasil