summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2016-05-15 10:03:31 +0300
committerTim Graham <timograham@gmail.com>2016-06-03 17:36:31 -0400
commit54febdb8be7c9793caae9c781f4d6b7cbbdcd900 (patch)
tree8ee61c988f2fba7fa3b21faf3cd7985465c1eb7b
parentbed20555064da306191b414085bc2cb85657baac (diff)
Fixed #26604 -- Added a multiple file upload example to topics/http/file-uploads.txt.
-rw-r--r--docs/topics/http/file-uploads.txt40
1 files changed, 40 insertions, 0 deletions
diff --git a/docs/topics/http/file-uploads.txt b/docs/topics/http/file-uploads.txt
index 06ec03ee61..4b13b292ba 100644
--- a/docs/topics/http/file-uploads.txt
+++ b/docs/topics/http/file-uploads.txt
@@ -122,6 +122,46 @@ field in the model::
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})
+Uploading multiple files
+------------------------
+
+If you want to upload multiple files using one form field, set the ``multiple``
+HTML attribute of field's widget:
+
+.. snippet::
+ :filename: forms.py
+
+ from django import forms
+
+ class FileFieldForm(forms.Form):
+ file_field = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
+
+Then override the ``post`` method of your
+:class:`~django.views.generic.edit.FormView` subclass to handle multiple file
+uploads:
+
+.. snippet::
+ :filename: views.py
+
+ from django.views.generic.edit import FormView
+ from .forms import FileFieldForm
+
+ class FileFieldView(FormView):
+ form_class = FileFieldForm
+ template_name = 'upload.html' # Replace with your template.
+ success_url = '...' # Replace with your URL or reverse().
+
+ def post(self, request, *args, **kwargs):
+ form_class = self.get_form_class()
+ form = self.get_form(form_class)
+ files = request.FILES.getlist('file_field')
+ if form.is_valid():
+ for f in files:
+ ... # Do something with each file.
+ return self.form_valid(form)
+ else:
+ return self.form_invalid(form)
+
Upload Handlers
===============