Estoy desarrollando un proyecto Django (1.3) compuesto por muchas aplicaciones. Cada aplicación tiene sus propios archivos estáticos en su propio directorio static
. Además, he agregado un directorio llamado project_static
que debe contener archivos estáticos que son comunes en las distintas aplicaciones, como jQuery.Administración de archivos estáticos para múltiples aplicaciones en Django
El problema que me encuentro de inmediato es el de nombrar las colisiones. De forma predeterminada, collectstatic
simplemente colocará todo bajo un directorio global static
, sin clasificarlos por aplicación. Esto no funciona para mí, ya que cada aplicación tiene, por ejemplo, un archivo llamado css/screen.css
.
La forma en que lo resolvió es mediante la eliminación de django.contrib.staticfiles.finders.AppDirectoriesFinder
de STATICFILES_FINDERS
y el uso de namespaced static files dirs, por lo que la configuración de mi ahora parezca
STATICFILES_DIRS = (
os.path.join(PROJECT_PATH, 'project_static'),
('my_app', os.path.join(PROJECT_PATH, 'my_app', 'static')),
('another_app', os.path.join(PROJECT_PATH, 'another_app', 'static')),
...
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
)
El problema es que de esta manera pierdo los archivos estáticos para todas las demás aplicaciones, por instancia django.contrib.admin
. Por supuesto, podría agregar manualmente el administrador, pero no estoy seguro de cómo hacerlo sin romper el administrador, que tiene una estructura de directorios diferente.
¿Existe una forma mejor de administrar los archivos estáticos con más de una aplicación?
si servimos los archivos estáticos usando nginx ¿esta sigue siendo la forma preferida? (manteniendo los archivos estáticos, las plantillas en la aplicación en sí) – Dineshkumar
Sí. Desea que todos sus activos se administren con su proyecto. –