mirror of https://github.com/django/django.git
[1.4.X] Fixed #17016 - Added examples for file uploads in views.
Thanks Tim Saylor for the draft patch and Aymeric Augustin and Claude Paroz for feedback.
Backport of eff6ba2f64
from master
This commit is contained in:
parent
6536f7597b
commit
fba0149e16
1
AUTHORS
1
AUTHORS
|
@ -453,6 +453,7 @@ answer newbie questions, and generally made Django that much better:
|
|||
Vinay Sajip <vinay_sajip@yahoo.co.uk>
|
||||
Bartolome Sanchez Salado <i42sasab@uco.es>
|
||||
Kadesarin Sanjek
|
||||
Tim Saylor <tim.saylor@gmail.com>
|
||||
Massimo Scamarcia <massimo.scamarcia@gmail.com>
|
||||
Paulo Scardine <paulo@scardine.com.br>
|
||||
David Schein
|
||||
|
|
|
@ -179,6 +179,50 @@ Three settings control Django's file upload behavior:
|
|||
Which means "try to upload to memory first, then fall back to temporary
|
||||
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
|
||||
========================
|
||||
|
||||
|
|
Loading…
Reference in New Issue