Fixed #17016 - Added examples for file uploads in views.
Thanks Tim Saylor for the draft patch and Aymeric Augustin and Claude Paroz for feedback.
This commit is contained in:
parent
92b2dec918
commit
eff6ba2f64
1
AUTHORS
1
AUTHORS
|
@ -467,6 +467,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Vinay Sajip <vinay_sajip@yahoo.co.uk>
|
Vinay Sajip <vinay_sajip@yahoo.co.uk>
|
||||||
Bartolome Sanchez Salado <i42sasab@uco.es>
|
Bartolome Sanchez Salado <i42sasab@uco.es>
|
||||||
Kadesarin Sanjek
|
Kadesarin Sanjek
|
||||||
|
Tim Saylor <tim.saylor@gmail.com>
|
||||||
Massimo Scamarcia <massimo.scamarcia@gmail.com>
|
Massimo Scamarcia <massimo.scamarcia@gmail.com>
|
||||||
Paulo Scardine <paulo@scardine.com.br>
|
Paulo Scardine <paulo@scardine.com.br>
|
||||||
David Schein
|
David Schein
|
||||||
|
|
|
@ -178,6 +178,50 @@ Three settings control Django's file upload behavior:
|
||||||
Which means "try to upload to memory first, then fall back to temporary
|
Which means "try to upload to memory first, then fall back to temporary
|
||||||
files."
|
files."
|
||||||
|
|
||||||
|
Handling uploaded files with a model
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
If you're saving a file on a :class:`~django.db.models.Model` with a
|
||||||
|
:class:`~django.db.models.FileField`, using a :class:`~django.forms.ModelForm`
|
||||||
|
makes this process much easier. The file object will be saved when calling
|
||||||
|
``form.save()``::
|
||||||
|
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
|
from django.shortcuts import render
|
||||||
|
from .forms import ModelFormWithFileField
|
||||||
|
|
||||||
|
def upload_file(request):
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = ModelFormWithFileField(request.POST, request.FILES)
|
||||||
|
if form.is_valid():
|
||||||
|
# file is saved
|
||||||
|
form.save()
|
||||||
|
return HttpResponseRedirect('/success/url/')
|
||||||
|
else:
|
||||||
|
form = ModelFormWithFileField()
|
||||||
|
return render('upload.html', {'form': form})
|
||||||
|
|
||||||
|
If you are constructing an object manually, you can simply assign the file
|
||||||
|
object from :attr:`request.FILES <django.http.HttpRequest.FILES>` to the file
|
||||||
|
field in the model::
|
||||||
|
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
|
from django.shortcuts import render
|
||||||
|
from .forms import UploadFileForm
|
||||||
|
from .models import ModelWithFileField
|
||||||
|
|
||||||
|
def upload_file(request):
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = UploadFileForm(request.POST, request.FILES)
|
||||||
|
if form.is_valid():
|
||||||
|
instance = ModelWithFileField(file_field=request.FILES['file'])
|
||||||
|
instance.save()
|
||||||
|
return HttpResponseRedirect('/success/url/')
|
||||||
|
else:
|
||||||
|
form = UploadFileForm()
|
||||||
|
return render('upload.html', {'form': form})
|
||||||
|
|
||||||
|
|
||||||
``UploadedFile`` objects
|
``UploadedFile`` objects
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue