while template staticfiles running not noinput manage files error enable python django python-3.x static-files

python - template - El comando ''collectstatic'' falla cuando WhiteNoise está habilitado



static files on django (8)

Acabo de tener este mismo problema y lo solucioné eliminando esta línea de mi archivo de configuración,

STATICFILES_STORAGE = ''whitenoise.django.GzipManifestStaticFilesStorage''

Obtuve esta línea de la página de documentación de Heroku ...

Estoy tratando de servir archivos estáticos a través de WhiteNoise según la recomendación de Heroku . Cuando ejecuto collectstatic en mi entorno de desarrollo, esto sucede:

Post-processing ''css/iconic/open-iconic-bootstrap.css'' failed! Traceback (most recent call last): File "./manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 338, in execute output = self.handle(*args, **options) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 533, in handle return self.handle_noargs(**options) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle_noargs collected = self.collect() File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 120, in collect raise processed File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 242, in post_process content = pattern.sub(converter, content) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 181, in converter hashed_url = self.url(unquote(joined_result), force=True) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 128, in url hashed_name = self.stored_name(clean_name) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 277, in stored_name cache_name = self.clean_name(self.hashed_name(name)) File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 91, in hashed_name (clean_name, self)) ValueError: The file ''css/fonts/open-iconic.eot'' could not be found with <whitenoise.django.GzipManifestStaticFilesStorage object at 0x7f57fc5b1550>.

El comando de recopilación estática se ejecuta sin incidentes cuando comento esta línea en mi configuración:

STATICFILES_STORAGE = ''whitenoise.django.GzipManifestStaticFilesStorage''

¿Qué está mal aquí y cómo lo arreglo? Ya intenté vaciar mi carpeta de salida de archivo estático. Se ejecuta sin problemas hasta que comienza a procesar un archivo específico.


El problema aquí es que css/iconic/open-iconic-bootstrap.css hace referencia a un archivo, open-iconic.eot , que no existe en la ubicación esperada.

Cuando ejecuta collectstatic con ese backend de almacenamiento, Django intenta volver a escribir todas las URL en sus archivos CSS para que css/iconic/open-iconic.8a7442ca6bed.eot referencia a los archivos por sus nuevos nombres, por ejemplo, css/iconic/open-iconic.8a7442ca6bed.eot . Si no puede encontrar el archivo, se detiene con ese error.


El problema aquí es que usar

STATICFILES_STORAGE = ''whitenoise.storage.CompressedManifestStaticFilesStorage''

o

STATICFILES_STORAGE = ''django.contrib.staticfiles.storage.ManifestStaticFilesStorage

utiliza el almacenamiento de archivos estáticos de Django de una manera diferente a la que ejecuta runserver. Consulte la documentación de Django para obtener una explicación: https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.manifest_strict

Creo que el manifiesto al que se hace referencia se crea cuando se ejecuta collectstatic, por lo que hacerlo debería solucionar este problema temporalmente, pero es probable que no desee ejecutar collectstatic antes de cada ejecución de prueba si ha modificado algún archivo estático. Otra solución sería deshabilitar esta configuración para sus pruebas y simplemente ejecutarla en producción.


He estado lidiando con este problema todo el día. Resulta que el problema era que el directorio staticfiles no estaba registrado en git. Creé un archivo ficticio dentro de este directorio, lo registré y todo estaba bien. Esto también fue mencionado en algún lugar de la documentación de Whitenoise, creo.


He tenido este error al reclamar un archivo .css faltante cuando todos mis archivos .css existían, porque confiaba en la documentación de Heroku:

STATIC_ROOT = ''staticfiles''

Sobre la documentación de WhiteNoise:

STATIC_ROOT = os.path.join(BASE_DIR, ''staticfiles'')

La solución es trivial, pero hasta que Heroku arregle sus documentos (envié mis comentarios), aseguremos que al menos la solución aparezca en SO.


Me funcionó comentando el whitenoise en settings.py en producción.

#STATICFILES_STORAGE = ''whitenoise.django.GzipManifestStaticFilesStorage'' #WHITENOISE_ROOT = os.path.join(BASE_DIR, ''staticfiles'')


Para mí, la solución fue simplemente agregar una carpeta ''estática'' al directorio superior (myapp / static hizo el truco). Si está configurando STATIC_URL pero no tiene ese directorio ya creado, generará un error, aunque no esté utilizando ese directorio para sus archivos estáticos con whitenoise.

STATIC_URL = ''/static/''


Tuve un problema similar, pero con un giro.

Desplegado en pythonanywhere. Si vuelvo la depuración verdadera, la aplicación funciona bien. Pero si un turno de depuración es Falso, la aplicación falla con un error que con una línea es el resumen

ValueError: Missing staticfiles manifest entry for ''favicons/favicon.ico''

Cambié de STATIC_ROOT = ''staticfiles a STATIC_ROOT = os.path.join(BASE_DIR, ''staticfiles'')

Se staticfiles directorio de staticfiles , luego vuelva a ejecutar python manage.py collectstatic .

Ahora la aplicación funciona bien