From the Django Docs:
Deployment django.contrib.staticfiles provides a convenience management command for gathering static files in a single directory s
Why not just serve your static
directory? You might use more than one app, and some of your apps may not be under your control. Before the staticfiles
app existed, you then had to either manually copy the static files for all apps to a common directory, upload them to your CDN, or symlink them to the document root of your web server.
The staticfiles app established a convention: put static files for each app under a static
directory and let Django do the work for you.