2011-09-17 22 views
19

Estoy confundido acerca de archivos estáticos y archivos multimedia en django. He visto en otro lugar que la gente lo usa indistintamente.django: ¿cuándo debería usar media_root o static_root?

¿Cuándo debo usar media_root y cuándo debo usar static_root?

Si tengo imágenes del sitio, ¿debo ponerlo en estático? Y si tengo imágenes de productos, ¿las pongo en los medios?

Respuesta

28

MEDIA_ROOT es el directorio donde se colocan las cargas de archivos, así como también donde se almacenan los archivos generados. Por ejemplo, una de mis aplicaciones de Django permite a los usuarios subir imágenes. En una de las clases modelo, utilizo el tipo ImageField de sorl-thumbnail con upload_to='%Y-%m'. Cada vez que un usuario carga una imagen, el archivo se almacena en MEDIA_ROOT/%Y-%m/ (con %Y reemplazado por el año actual y %m reemplazado por el número de mes actual). Además, cuando sorl-thumbnail genera una miniatura para una imagen cargada, coloca la miniatura by default en algún lugar en MEDIA_ROOT/cache/.

STATIC_ROOT se utiliza para configurar el directorio donde se colocan los activos estáticos. Por ejemplo, las hojas de estilo del sitio, los archivos JavaScript y las imágenes utilizadas en el diseño de páginas web son los tipos de archivos que entran en STATIC_ROOT. Si tiene varias aplicaciones instaladas, cada aplicación que use archivos estáticos puede tener su propio directorio de archivos estáticos. Utiliza la función de administración collectstatic (invocada a través del python manage.py collectstatic) para copiar todos los archivos estáticos de las aplicaciones en STATIC_ROOT.

+0

gracias por la respuesta. Una pregunta de seguimiento más. ¿Qué pasa si obtengo imágenes de productos? ¿A dónde debería ir eso? Los administradores pueden subirlo y deben mostrarse en el sitio. –

+0

@ bash-: ¿Almacena las rutas de las imágenes de producto en la base de datos? Los archivos de ['ImageField'] (https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield) y [' FileField'] (https://docs.djangoproject.com/en/dev/ref/models/fields/# filefield) vaya en 'MEDIA_ROOT', por lo que en este caso, sí, las imágenes del producto van en' MEDIA_ROOT' (pero no es necesario cargarlas en 'MEDIA_ROOT' a mano, la aplicación debería hacer eso). Si está manteniendo manualmente las imágenes del producto y haciendo referencia a ellas en las etiquetas '' en las plantillas, entonces las imágenes del producto deben ir en 'STATIC_ROOT'. –

Cuestiones relacionadas