¿Cómo se configura STATIC_URL y STATIC_ROOT en Django?
Configurar STATIC_URL y STATIC_ROOT en Django es crucial para servir archivos estáticos (como CSS, JavaScript e imágenes) en modo de producción. Aquí tienes una guía detallada sobre ambos:
1. ¿Qué es STATIC_URL?
STATIC_URL define la URL pública desde la que se accederán los archivos estáticos. Es la dirección que se utilizará en los archivos HTML para que el navegador pueda cargar estos recursos. Este valor suele terminar en una barra / para indicar una ruta de directorio.
STATIC_URL = '/static/' # Esta es la configuración más común2. ¿Qué es STATIC_ROOT?
STATIC_ROOT define la ruta del sistema de archivos en tu servidor donde se recopilarán todos los archivos estáticos de tu proyecto cuando prepares tu aplicación para producción. En otras palabras, es el directorio donde se almacenarán los archivos después de ejecutar el comando collectstatic.
Por ejemplo:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')Con esta configuración, Django creará un directorio llamado staticfiles dentro de tu directorio base del proyecto (BASE_DIR). Al ejecutar collectstatic, todos los archivos estáticos de las aplicaciones se copiarán a este directorio.
3. Configuración para Desarrollo vs. Producción
En Desarrollo (DEBUG = True)
Django sirve automáticamente los archivos estáticos desde los directorios especificados en STATICFILES_DIRS (que suelen estar en cada aplicación) y desde STATIC_URL. No es necesario configurar STATIC_ROOT en desarrollo, y tampoco necesitas ejecutar collectstatic.
En Producción (DEBUG = False)
Cuando DEBUG = False, Django no sirve archivos estáticos automáticamente, por lo que:
- Define
STATIC_ROOT: Esto le indica a Django dónde almacenar todos los archivos estáticos recopilados. - Ejecuta
collectstatic: Usa el comandopython manage.py collectstaticpara recopilar todos los archivos estáticos en el directorio deSTATIC_ROOT. - Configura el servidor web: Configura el servidor para que sirva los archivos desde el directorio
STATIC_ROOT.
Ejemplo Completo de Configuración para Producción
# settings.pySTATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
Luego, al ejecutar el comando collectstatic, Django copiará todos los archivos estáticos al directorio STATIC_ROOT (staticfiles). De esta forma, el servidor web (Nginx, Apache, etc.) podrá servir los archivos estáticos desde ese directorio.

Comentarios
Publicar un comentario