Skip to content
This repository has been archived by the owner on Nov 7, 2022. It is now read-only.

bashu/django-fineuploader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-fineuploader

This is a Django integration of Fine Uploader JavaScript Upload Library.

Installation

pip install django-fineuploader

External dependencies

  • jQuery - This is not included in the package since it is expected that in most scenarios this would already be available.

Setup

Add fineuploader and fineuploader.ajaxuploader to INSTALLED_APPS:

INSTALLED_APPS += (
    'fineuploader',
    'fineuploader.ajaxuploader',
)

Be sure you have the django.template.context_processors.request processor

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
            ],
        },
    },
]

Update your urls.py file:

urlpatterns += [
    url(r'^fineuploader/', include('fineuploader.urls')),
]

and include fineuploader templates

{% include "fineuploader/fineuploader_css.html" %} {# Before the closing head tag #}
{% include "fineuploader/fineuploader_js.html" %} {# Before the closing body tag #}

When deploying on production server, don't forget to run:

python manage.py collectstatic

Usage

# forms.py

from django import forms

from fineuploader.forms import FineFormMixin
from fineuploader.formfields import FineFileField

class ExampleForm(FineFormMixin, forms.ModelForm):

    files = FineFileField(label="Files")

    class Meta:
        ...

    def save(self, *args, **kwargs):
        obj = super(ExampleForm, self).save(commit=True)

        self.handle_upload(obj, self.request)  # handle uploaded files

        self.delete_temporary_files()  # deleting temporary files / objects

        return obj

# views.py

from django.views import generic
from django.contrib.auth.mixins import LoginRequiredMixin

class ExampleCreateView(LoginRequiredMixin, generic.CreateView):
    form_class = ExampleForm  # our custom form class
    ...

    def get_form_kwargs(self):
        kwargs = super(ExampleCreateView, self).get_form_kwargs()
        kwargs.update({"request": self.request})  # must pass self.request into form
        return kwargs

class ExampleUpdateView(LoginRequiredMixin, generic.UpdateView):
    form_class = ExampleForm  # our custom form class
    ...

    def get_form_kwargs(self):
        kwargs = super(ExampleUpdateView, self).get_form_kwargs()
        kwargs.update({"request": self.request})  # must pass self.request into form
        return kwargs

License

django-fineuploader is released under the BSD license.