django backend for resumable.js xhr uploads.
JavaScript Python HTML
Latest commit e2b10e8 Apr 13, 2016 @jeanphix Bump 0.1.1
Failed to load latest commit information.
resumable as per authors request, changed te PR Apr 12, 2016
.gitignore Ignores .env Aug 2, 2012
MANIFEST.in Adds MANIFEST.in Sep 5, 2012
README.rst improve readme code blocks Jan 3, 2015
setup.py Bump 0.1.1 Apr 13, 2016

README.rst

django-resumable

https://drone.io/github.com/jeanphix/django-resumable/status.png

django-resumable provides django backend stuff that handles resumable.js xhr uploads.

Installation

  • pip install django-resumable
  • Add resumable to your INSTALLED_APPS

Views

In order to upload files asynchronous, you must define an endpoint that will deal with uploaded file chunks:

from django.contrib.auth.decorators import login_required

from resumable.views import ResumableUploadView


urlpatterns += patterns('',
    url('^upload/$', login_required(ResumableUploadView.as_view()),
        name='upload'),
)

You should also consider having per user chunk upload directory:

class MyResumableUploadView(ResumableUploadView):
    @property
    def chunks_dir(self):
        return self.request.user.profile.chunks_dir

Fields

If you want to handle resumable upload within your forms, you can use the ResumableFileField that works like django core FileField:

from django.conf import settings
from django.core.urlresolvers import reverse

from resumable.fields import ResumableFileField


class ResumableForm(Form):
    file = ResumableFileField(
        allowed_mimes=("audio/ogg",),
        upload_url=lambda: reverse('upload'),
        chunks_dir=getattr(settings, 'FILE_UPLOAD_TEMP_DIR')
    )

Javascript

django-resumable comes with extendable frontend scripts that work out of the box:

{% load staticfiles %}
<!DOCTYPE html>
<html>
    <body>
        <form method="post" action=".">
            <fieldset>
                {% csrf_token %}
                {{ form.as_p }}
            </fieldset>
            <p><input type="submit" value="send" /></p>
        </form>
        <script type="text/javascript" src="https://raw.github.com/23/resumable.js/master/resumable.js"></script>
        <script type="text/javascript" src="{% static 'resumable/js/django-resumable.js' %}"></script>
        <script type="text/javascript" src="{% static 'resumable/js/init.js' %}"></script>
    </body>
</html>