Las aplicaciones Django son paquetes de funcionalidad reutilizable. Al comenzar, es fácil simplemente usar una aplicación personalizada para su proyecto, pero la "forma de Django" es dividirla en aplicaciones separadas, cada una de las cuales solo hace una cosa. Puede echar un vistazo a django.contrib para ver ejemplos de aplicaciones reutilizables realmente bien hechas.
Un ejemplo reciente mío: un cliente necesitaba una forma de importar datos CSV a los modelos de Django. La manera más fácil sería simplemente agregar un modelo con un FileField y escribir un analizador rápido para el formato específico de lo que están cargando. Eso funcionaría bien hasta que el formato cambiara y tuviera que hacer coincidir el analizador. Pero esta es una tarea que se repite con frecuencia (importación de datos) y no relacionada con la aplicación existente (administración de esos datos), así que la resolví por sí misma. Esta aplicación conectable puede importar datos para cualquier modelo activo. Ahora, la próxima vez que un cliente necesite una funcionalidad de importación, solo agrego este código a installed_apps y ejecuto syncdb.
Es una llamada de juicio cuando se trata de crear una aplicación, pero la regla de oro para mí es si es probable que vuelva a hacer algo. Me tomaré más tiempo convertirla en una aplicación genérica. Eso significa que he creado algunas aplicaciones pequeñas (algunas solo contienen una etiqueta de plantilla), pero es poca sobrecarga para las ganancias futuras.
Esto tiene sentido, y confirma lo que pensaba. Gracias. –