tutorial mostrar imagenes examples bootstrap django django-staticfiles

mostrar - Administrando archivos estáticos para múltiples aplicaciones en Django



django tutorial (1)

Este es el mismo problema que ocurre con el uso de directorios de templates específicas de la aplicación. Si solo arroja los archivos directamente debajo de las templates en la aplicación, terminará con colisiones de nombres si dos aplicaciones o incluso el directorio de templates nivel de proyecto utilizan plantillas del mismo nombre. La solución para eso es poner las plantillas en un directorio del nombre de la aplicación dentro del directorio de templates como:

- some_app - templates - some_app - index.html

Entonces, aplico la misma idea a static:

- some_app - static - some_app - css - img - js

De esta forma, cuando ejecuta recopétrico, los archivos estáticos de cada aplicación individual se colocan dentro de un directorio de espacio de nombres. El único cambio que necesita hacer es colocar un prefijo a cada uno de los archivos con el directorio de nombre de la aplicación en sus plantillas. Entonces, en lugar de {{ STATIC_URL }}css/style.css tienes {{ STATIC_URL }}my_app/css/style.css .

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 diversas aplicaciones, como jQuery.

El problema con el que me encuentro de inmediato es el de nombrar colisiones. Por defecto, collectstatic simplemente pondrá todo bajo un directorio static global, 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 resolví fue eliminando django.contrib.staticfiles.finders.AppDirectoriesFinder de STATICFILES_FINDERS y usando STATICFILES_FINDERS archivos estáticos con nombres de espacio , por lo que mi configuración ahora se ve así:

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 ejemplo, 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.

¿Hay una mejor manera de administrar los archivos estáticos con más de una aplicación?