Django isn't meant to serve static files in production.
Django's code that serves static files is meant for development, it is not meant to be performant or even secure.
The primary use of an HTTP server is to serve static files, it is ment to be performant and secure for that. Django has no good reason to interfere between the HTTP server and the file system.
A system administrators is ment to configure a secure and performant HTTP server. It is not the fault of Django if a system administrator cannot do this.
By doing this, Django complies with several Unix principles:
- Rule of Simplicity: Design for simplicity; add complexity only where you must.
- Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
- Rule of Modularity: Write simple parts connected by clean interfaces.
- Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
- Rule of Clarity: Clarity is better than cleverness.
etc ...
Django's staticfiles system is awesome, in fact many have been using it before it was included into django (see django-staticfiles app). I am convinced that anyone willing to do little effort can understand it fully and find it awesome too. I remember it was a little hard for me to understand django-staticfiles, but then it's nothing but a love story.
Apps can embed static files in addition to urls, templates, views and models by just creating a 'static' sub directory.
If you don't understand how django helps at handling static files very well, you can try this article surviving django staticfiles.