Django collectstatic seleccionando archivos de ubicación incorrecta.
Soy principiante en Python y Django. Estoy usando Windows 10 y he instalado Python 3.10.0 y pip 21.3.1. He instalado Django utilizando los siguientes comandos
pip install virtualenvwrapper-win
mkvirtualenv firstdjango
pip install django
django-admin startproject demo
Luego, creé una aplicación para una simple página HTML estática y ahora estoy tratando de utilizar archivos estáticos. He creado una carpeta llamada “static” en la raíz y he colocado todos los archivos css, js, etc. en ella. En el archivo settings.py, mencioné lo siguiente.
STATIC_URL = '/static/'
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR,'assets')
Ahora, cuando ejecuto el comando
python manage.py collectstatic
no copia lo que está en mi carpeta static a la carpeta assets.
Cuando intento verificar desde dónde collectstatic está intentando copiar utilizando el siguiente comando
python manage.py findstatic -v 3 dummy
obtengo lo siguiente
C:\Users\dell\Envs\firstdjango\lib\site-packages\django\contrib\admin\static
pero la ubicación de mi proyecto es E:\django\demo.
No entiendo por qué collectstatic no puede copiar los archivos correctos y, por lo tanto, no obtengo las rutas correctas de mis archivos css, js e imágenes en mi página web.
davy.ai
Solución para recopilar archivos estáticos en Django
Como has creado un proyecto de Django con una carpeta estática, es necesario recopilar todos los archivos estáticos en un solo directorio. Sigue estos pasos para recopilar archivos estáticos en Django:
STATIC_URL
esté apuntando al directorio correcto, que es/static/
.STATICFILES_DIRS
en la ubicación de tus archivos estáticos.STATIC_ROOT
en la ubicación donde se recopilarán los archivos estáticos. Asegúrate de crear este directorio con anticipación.collectstatic
usandopython manage.py collectstatic
. Deberías ver un mensaje confirmando que se han recopilado los archivos estáticos.En tu caso, los archivos estáticos no se están copiando porque las rutas
STATICFILES_DIRS
ySTATIC_ROOT
no están configuradas correctamente. Puedes cambiarSTATICFILES_DIRS
aos.path.join(BASE_DIR, 'demo/static')
ySTATIC_ROOT
aos.path.join(BASE_DIR, 'assets/')
.Después de eso, ejecuta nuevamente el comando
collectstatic
y debería recopilar todos los archivos estáticos de tu directorio estático en el directorio de assets.Si aún tienes problemas, intenta usar la bandera
--noinput
con el comandocollectstatic
, lo cual puede ayudar a omitir algunas solicitudes. Además, asegúrate de tener la configuraciónSTATICFILES_FINDERS
correctamente configurada en tu archivosettings.py
.Una vez que se hayan recopilado tus archivos estáticos, puedes usarlos en tus páginas web utilizando la variable
STATIC_URL
en las plantillas. Por ejemplo, para incluir un archivo CSS, puedes utilizar{% static 'css/style.css' %}
. Esto generará la URL correcta para el archivo CSS basada en tu configuraciónSTATIC_URL
.