Esta es probablemente una pregunta estúpida, pero simplemente no está haciendo clic en mi cabeza.
En Django, la convención es poner todos sus archivos estáticos (es decir, css, js) específicos de su aplicación en una carpeta llamada static . Entonces la estructura se vería así:
mysite/
manage.py
mysite/ --> (settings.py, etc)
myapp/ --> (models.py, views.py, etc)
static/
En mysite/settings.pytengo:
STATIC_ROOT = 'staticfiles'
Entonces, cuando ejecuto el comando:
python manage.py collectstatic
Crea una carpeta llamada staticfilesen el nivel raíz (el mismo directorio que myapp/)
¿Cuál es el punto de esto? ¿No es solo crear una copia de todos mis archivos estáticos?
fuente

Los archivos estáticos de Django pueden estar en muchos lugares. Un archivo que se sirve como
/static/img/icon.pngpodría provenir de muchos lugares . Por defecto:FileSystemFinderbuscaráimg/icon.pngen cada uno deSTATICFILES_DIRS,AppDirectoriesFinderbuscaráimg/icon.pngen lastaticsubcarpeta de cada uno de susINSTALLED_APPS. Esto permite a bibliotecas como Django Admin agregar sus propios archivos estáticos a su aplicación.Ahora: esto solo funciona si ejecuta
manage.py runservercon DEBUG = 1. Cuando entre en funcionamiento, el proceso de Django ya no servirá los activos estáticos. Sería ineficaz usar Django para atenderlos, existen herramientas más especializadas específicamente para eso.En su lugar, debería hacer algo como esto:
staticdirectorio en algún lugar de su servidor web o un almacenamiento de archivos de terceros)/static/*directamente desde ese directorio y redirija cualquier otra solicitud a Django.collectstatices un script listo para usar que prepara este directorio para usted, para que pueda conectarlo directamente a su script de implementación.fuente
En la instalación de producción, desea tener URL persistentes. La URL no cambia a menos que cambie el contenido del archivo.
Esto es para evitar que los clientes tengan una versión incorrecta del archivo CSS o JS en su computadora al abrir una página web desde Django. Django staticfiles detecta cambios en los archivos y actualiza las URL en consecuencia, de modo que si el archivo CSS o JS cambia, el navegador web descarga la nueva versión.
Esto generalmente se logra agregando hash MD5 al nombre del archivo durante la
collectstaticejecución.Editar: consulte también la respuesta relacionada con varias aplicaciones.
fuente
settings.STATICFILES_STORAGEpredeterminado esStaticFilesStorage, por lo que MD5 se activará solo después de que, por ejemplo, lo establezca enManifestStaticFilesStorage, ¿estoy en lo correcto?Es útil cuando hay varias aplicaciones de django dentro del sitio.
collectstaticluego recopilará archivos estáticos de todas las aplicaciones en un solo lugar, para que puedan ser servidos en un entorno de producción.fuente