Skip to content

bpoetz/django-file-form

 
 

Repository files navigation

Build Status Version Development Status

Coverage Status Downloads Format Requirements Status

License Supported Python versions Supported Python implementations

#Django file form

Django-file-form helps you to write forms with a pretty ajax upload.

Features:

  • You can easily add an ajax file-upload to a form.
  • The ajax upload works the same as an html upload.
    • This means that you don't have to change your code to support ajax upload.
  • Supports single and multiple file upload.

The project is hosted on github.

Works with Django 1.4 - 1.7.

Usage

1 Install django-file-form

pip install django-file-form

2 Add the apps to your INSTALLED_APPS

You must include 'django_file_form' and 'django_file_form.ajaxuploader'

INSTALLED_APPS = [
    'django_file_form',
    'django_file_form.ajaxuploader',
]

3 Add the app to your urls

In this example we use the url upload/. You can use a different url if you like.

urlpatterns = patterns(
    '',
    url(r'^upload/', include('django_file_form.urls')),
)

4 Add FileFormMixin to your form

from django_file_form.forms import FileFormMixin

class ExampleForm(FileFormMixin, forms.Form):
    pass

5 Add a UploadedFileField

from django_file_form.forms import FileFormMixin, UploadedFileField

class ExampleForm(FileFormMixin, forms.Form):
    input_file = UploadedFileField()

6 Include javascript and css in your template

<script src="{{ STATIC_URL }}ajaxuploader/js/fileuploader.js"></script>
<script src="{{ STATIC_URL }}file_form/file_form.js"></script>
<link rel="stylesheet" href="{{ STATIC_URL }}ajaxuploader/css/fileuploader.css">

By the way, you must also include jquery.

7 Call the initUploadFields javascript function

<form id="example-form" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form }}
</form>

<script>
   $(function() {
       initUploadFields($('#example-form'));
   });
</script>

8 Handle uploaded files

class ExampleFormView(generic.FormView):
    template_name = 'example_form.html'
    form_class = forms.ExampleForm

    def form_valid(self, form):
    	input_file = form.cleaned_data['input_file']

    	return super(ExampleFormView, self).form_valid(form)

9 Delete temporary files

class ExampleFormView(generic.FormView):
    template_name = 'example_form.html'
    form_class = forms.ExampleForm

    def form_valid(self, form):
    	input_file = form.cleaned_data['input_file']

		self.delete_temporary_files()

    	return super(ExampleFormView, self).form_valid(form)

Also see the testproject in the repository.

About

Django-file-form helps you to write forms with a pretty ajax upload

Resources

License

Stars

Watchers

Forks

Packages

No packages published