A menudo querremos ofrecer archivos privados en nuestra aplicación Django. La solución más sencilla a esta función es hacer una redirección vía regex a una función que lleve el decorador require_login, de la librería de Django.
Dicha redirección deberá ser incluida en el archivo urls.py principal de nuestro proyecto. Un ejemplo de implementación de esta funcionalidad es el siguiente:
urlpatterns = [ url(r'^admin/', admin.site.urls), ] @login_required def protected_serve(request, path, document_root=None, show_indexes=False): print("Serving " + path) return serve(request, path, document_root, show_indexes) urlpatterns += [ url( r'^%s(?P<path>.*)$'% settings.MEDIA_URL[1:], protected_serve, {'document_root': settings.MEDIA_ROOT}), ]
Modificando la ruta podrás distinguir qué archivos quedan privados y cuáles no. Si tengo tiempo escribiré un par de ejemplos. Gracias por leerme 😉
Fuente: http://blog.majsky.cz/django-protected-media-files/