es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Asegúrate de que tu STATIC_URL esté apuntando al directorio correcto, que es /static/.
    2. Establece STATICFILES_DIRS en la ubicación de tus archivos estáticos.
    3. Establece STATIC_ROOT en la ubicación donde se recopilarán los archivos estáticos. Asegúrate de crear este directorio con anticipación.
    4. A continuación, ejecuta el comando collectstatic usando python 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 y STATIC_ROOT no están configuradas correctamente. Puedes cambiar STATICFILES_DIRS a os.path.join(BASE_DIR, 'demo/static') y STATIC_ROOT a os.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 comando collectstatic, lo cual puede ayudar a omitir algunas solicitudes. Además, asegúrate de tener la configuración STATICFILES_FINDERS correctamente configurada en tu archivo settings.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ón STATIC_URL.

Comments are closed.