Django ofrece la eficaz herramienta de Django staticfiles, la cual facilita la gestión de archivos estáticos. Los archivos estáticos son todos tus archivos CSS y JavaScript, imágenes, iconos y cualquier otro archivo estático que desees servir a través de tu aplicación web (Django documentation, 2021).
El primer paso sería especificar la ubicación de tus archivos estáticos en tu configuración de Django. Para hacer esto, debes agregar una variable STATICFILES_DIRS en tu archivo settings.py. Esta variable debe ser una tupla que contenga la ruta completa al directorio de tus archivos estáticos, veamos un ejemplo:
```python
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))
STATICFILES_DIRS = [os.path.join(BASE_DIR, ‘nombre_app/static’),]
```
Django buscará los archivos estáticos en las ubicaciones especificadas aquí al ejecutar el comando `collectstatic`.
Para referenciar tus archivos estáticos en tus plantillas de Django, puedes usar la etiqueta `{% static %}` . Esta etiqueta generará la URL correcta para tu archivo estático. Aquí tienes un ejemplo en una plantilla de cómo se puede hacer referencia a un archivo de imagen:
```html
{% load static %}
```
Posteriormente, para recolectar todos tus archivos estáticos en un solo lugar para servirlos en producción, puedes usar el comando `collectstatic` que viene con Django:
```bash
python manage.py collectstatic
```
Este comando copiará todos los archivos de tus aplicaciones y de los directorios que especificaste en STATICFILES_DIRS a la ubicación especificada en la variable STATIC_ROOT.
Es recomendable usar un servicio de almacenamiento estático externo, como Amazon S3 o Google Cloud Storage, para servir tus archivos estáticos en producción, ya que estos servicios están diseñados para la entrega de archivos estáticos y pueden hacerlo más eficientemente y a un costo más bajo que tu servidor web (Ilyas, M. 2019).
En términos generales, es importante tener en cuenta que el manejo de archivos estáticos difiere entre el entorno de desarrollo y el de producción, y Django ofrece herramientas flexibles para manejar ambos escenarios.
Fuentes:
- Django documentation (2021). Managing static files (e.g. images, JavaScript, CSS). Recuperado de: https://docs.djangoproject.com/en/3.2/howto/static-files/
- Ilyas, M. (2019). Serving Django static and media files in production. Recuperado de: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04