I spent too long tonight figuring out a weird problem.
On a dev server, I was using
django.views.static.serve to serve media files. But it was returning 404 (not found) for any file.
The requests for media files weren’t even showing up in Django’s built-in server’s output. That had me baffled until I dug deep enough in Django’s code to figure it out.
ADMIN_MEDIA_PREFIX was the same as
MEDIA_URL. That was it.
Django’s built-in server doesn’t log requests for admin media, so that’s why there was no log output.
The built-in server also handles admin media separately, so when I tried to request a media file, it intercepted and looked for it in the admin media.
The solution is for the
ADMIN_MEDIA_PREFIX to be different from