django-fileprovider

django middleware for serving media files ( or protect them )


Keywords
apache, caddy, caddyserver, django, hiawatha, lighthttpd, nginx, python, sendfile
License
BSD-3-Clause
Install
pip install django-fileprovider==0.1.4

Documentation

Build Status

File handler for django, useful when you want to add control or logic to served files.
It uses sendfile API supports on different servers and uses pythonic solution on django development server.
Currently it supports,

  • Apache
  • Nginx
  • LightHttpd
  • Caddy
  • Hiawatha

INSTALLATION

use pip to install package:
pip install django-fileprovider

  • add fileprovider to django INSTALLED_APPS section.
  • add fileprovider.middleware.FileProviderMiddleware to MIDDLEWARE_CLASSES section
  • set django settings file with FILEPROVIDER_NAME any of available providers python, nginx, apache, lighthttpd, caddy, hiawatha, xsendfile, xaccel.
   
   # or you can put FILEPROVIDER_NAME as python in your local settings file  
   if settings.DEBUG:
       FILEPROVIDER_NAME = "python"
   else:
       # or apache, lighthttpd, caddy
       FILEPROVIDER_NAME = "nginx"

USAGE

on django views where file response is required, fill response header X-File with absolute file path or use sendfile wrapper
for example,

   from fileprovider.utils import sendfile  
   def hello(request):
       return sendfile('/absolute/path/to/file')