Skip to content

Commit 57f1693

Browse files
author
Dan Johnson
committed
Added example for demonstrating how to create custom views that interact
with jQuery File Upload plugin.
1 parent f96a9ed commit 57f1693

File tree

4 files changed

+31
-4
lines changed

4 files changed

+31
-4
lines changed

fileupload/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
from django.db import models
2+
from django.contrib.auth.models import User
23

34
class Picture(models.Model):
45

56
# This is a small demo using FileField instead of ImageField, not
67
# depending on PIL. You will probably want ImageField in your app.
78
file = models.FileField(upload_to="pictures")
89
slug = models.SlugField(max_length=50, blank=True)
10+
creator = models.ForeignKey(User)
911

1012
def __unicode__(self):
11-
return self.file
13+
return self.file.name
1214

1315
@models.permalink
1416
def get_absolute_url(self):

fileupload/templates/fileupload/picture_form.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
<div class="page-header">
5353
<h1>Django Jquery File Upload Demo</h1>
5454
</div>
55-
<form id="fileupload" method="post" action="." enctype="multipart/form-data">{% csrf_token %}
55+
<form id="fileupload" method="post" action="./add/" enctype="multipart/form-data">{% csrf_token %}
5656
<div class="row fileupload-buttonbar">
5757
<div class="span7">
5858
<span class="btn btn-primary fileinput-button">

fileupload/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from django.conf.urls.defaults import *
2-
from fileupload.views import PictureCreateView, PictureDeleteView
2+
from fileupload.views import PictureCreateView, PictureDeleteView, multiple_uploader
3+
34

45
urlpatterns = patterns('',
56
(r'^new/$', PictureCreateView.as_view(), {}, 'upload-new'),
7+
(r'^new/add/$', multiple_uploader, {}, 'upload-add'),
68
(r'^delete/(?P<pk>\d+)$', PictureDeleteView.as_view(), {}, 'upload-delete'),
79
)
810

fileupload/views.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from django.http import HttpResponse
55
from django.utils import simplejson
66
from django.core.urlresolvers import reverse
7-
87
from django.conf import settings
98

109
def response_mimetype(request):
@@ -24,6 +23,30 @@ def form_valid(self, form):
2423
response['Content-Disposition'] = 'inline; filename=files.json'
2524
return response
2625

26+
def multiple_uploader(request):
27+
if request.POST:
28+
if request.FILES == None:
29+
raise Http404("No objects uploaded")
30+
f = request.FILES['file']
31+
32+
a = Picture()
33+
a.creator = request.user
34+
a.file.save(f.name, f)
35+
a.save()
36+
37+
result = [{'name': f.name,
38+
'size': f.size,
39+
'url': a.file.url,
40+
},]
41+
42+
response_data = simplejson.dumps(result)
43+
if "application/json" in request.META['HTTP_ACCEPT_ENCODING']:
44+
mimetype = 'application/json'
45+
else:
46+
mimetype = 'text/plain'
47+
return HttpResponse(response_data, mimetype=mimetype)
48+
else:
49+
return HttpResponse('Only POST accepted')
2750

2851
class PictureDeleteView(DeleteView):
2952
model = Picture

0 commit comments

Comments
 (0)