Django: staticfiles

2 minuto(s) de leitura

Para fazer com que o Django utiliza arquivos estáticos — usualmente acessários para renderizar os arquivos HTML (tais como css, javascript, fonts, imagens etc) — é necessário ajustar alguns parâmetros no arquivo settings, conforme abaixo:

# Static files (CSS, JavaScript, Images)
# The URL which will serve static files
STATIC_URL = '/static/'

# Where to look to search
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'dados/static_app'),
    os.path.join(BASE_DIR, 'sabesp/static_app'),
]

# Where locate files, and comment the AppDirectoriesFinder
STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

# Name of dir that will be create
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')


Ainda, na sessão Middleware, é necessário acrescentar o comando 'whitenoise.middleware.WhiteNoiseMiddleware', conforme é apresentado abaixo.

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware', # Add Whitenoise Middleware
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


Comando para reunir todos os arquivos na pasta definida em STATIC_ROOT

python manage.py collectstatic


É possivel procurar a fonte de um arquivo, ou seja, qual o local que ele está buscando o arquivo:

python manage.py findstatic css/base.css admin/js/core.jspython manage.py


WhiteNoise

  • http://whitenoise.evans.io/en/stable



Problemas

Could be not found

Nos projetos que eu utiliava o template AdminLTE, ao realizar o comando collectstatic eu recebia o seguinte erro:

whitenoise.storage.MissingFileError: The file 'plugins/jquery-ui/"images/ui-icons_555555_256x240.png"' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage object at 0x7f04d25224d0>.

The CSS file 'plugins/jquery-ui/jquery-ui.css' references a file which could not be found:
  plugins/jquery-ui/"images/ui-icons_555555_256x240.png"

Please check the URL references in this CSS file, particularly any
relative paths which might be pointing to the wrong location.


Para contornar econtrei discussão em stackoverflow: Whitenoise giving errors on jquery-ui.css when doing collectstatic que sugeria deletar all first comment block in all jquery css file e deu certo.

Por exemplo, o arquivo que era assim:

/*! jQuery UI - v1.13.0 - 2021-10-07
* http://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme
* Copyright jQuery Foundation and other contributors; Licensed MIT */

/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
  display: none;
}


Ficou assim:

.ui-helper-hidden {
  display: none;
}


Sem sucesso!



Tentei também substiuir…

Substitui "images/ui-icons_555555_256x240.png" por %22images%2Fui-icons_555555_256x240.png%22


Sem sucesso!
Solução tosca: deletar as entradas!



The JS file ‘plugins/pdfmake/pdfmake.js’ references a file which could not be found:

Recebia o erro que determinado arquivo fazia menção a outro… que não constava nos arquivos estáticos.

The JS file 'plugins/pdfmake/pdfmake.js' references a file which could not be found:
  plugins/pdfmake/FileSaver.min.js.map

Fui procurar a menção. Tratava-se de um comentário: excluí!



Referências

Deixe um comentário