2011-02-16 19 views
53

Me estoy moviendo a Django 1.3 y encuentro esta separación de medios y archivos estáticos un poco confusa. Así es como predeterminado settings.py siguiente aspecto:¿Cuál es la diferencia entre los archivos estáticos y los archivos multimedia en Django?

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/media/" 
MEDIA_ROOT = '' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" 
MEDIA_URL = '' 

# Absolute path to the directory that holds static files. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = '' 

# URL that handles the static files served from STATIC_ROOT. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

¿Qué debo poner en MEDIA_ROOT y una STATIC_ROOT? ¿Deberían ser directorios separados? ¿Cuál es la diferencia?

+0

ver esta publicación https://groups.google.com/forum/#!topic/django-users/tSb4EC0G040 – laike9m

Respuesta

49

Los archivos estáticos están diseñados para javascript/images, etc., pero los archivos multimedia son para contenido cargado por el usuario.

+0

qué ocurre con las aplicaciones que aún almacenan sus cosas en los medios. por ejemplo contrib.admin. ¿Debería enlazar simbólicamente a la carpeta multimedia de mis proyectos o a la carpeta estática ahora? porque de acuerdo a su respuesta, esos archivos ahora pertenecen en estática. – darren

+0

@mongoose_za: la aplicación de administración ahora tiene una carpeta estática y ya no usa medios. Ya no necesita enlazar simbólicamente los archivos multimedia del administrador si usa la aplicación staticfiles. –

29

Como dijo Uku Loskit, los archivos estáticos son para cosas como los archivos css de sus aplicaciones, archivos javascript, imágenes, etc. Los archivos multimedia suelen ser archivos que se pueden cargar por el usuario o el administrador.

Normalmente querrá MEDIA_ROOT y STATIC_ROOT para ser directorios separados. Tenga en cuenta que STATIC_ROOT es donde el comando de administración collectstatic colocará todos los archivos estáticos que encuentre. En producción, luego configura su servidor web para que entregue los archivos de STATIC_ROOT cuando se le presente una solicitud que comience con STATIC_URL. Si está utilizando el Django devserver para el desarrollo, automáticamente servirá los archivos estáticos.

La aplicación staticfiles desenreda así los medios cargados por el usuario desde los medios de la aplicación, facilitando así la implementación, las copias de seguridad y el control de versiones. Antes de la aplicación staticfiles, era común que los desarrolladores tuvieran los archivos multimedia mezclados con activos de aplicaciones estáticas.

Los 1.3 documentos para archivos estáticos han ido mejorando constantemente; para más detalles, mira el how-to.

Cuestiones relacionadas