Django static media always returning 404 not found
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.
The 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 MEDIA_URL
, e.g. /media/
and /media/admin/
.