Verarbeitung eines Bild-Upload-Formulars in Django: Wann sollte save () vs chunks () vs cleaner_data verwendet werden?

Ich habe erfolgreich ein Bild mit dem folgenden Code hochgeladen:

views.py

from django.conf.urls.defaults import *
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response
from django import template
from django.template import RequestContext

from mysite.uploadr.forms import UploadFileForm

def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.handle_uploaded_file(request.FILES['file'])
            return HttpResponse(template.Template('''
                        <html><head><title>Uploaded</title></head> <body>
                        <h1>Uploaded</h1>
                        </body></html>
                        '''
                        ).render( template.Context({}))
                    )
    else:  
        form = UploadFileForm()
    return render_to_response('upload.html', {'form': form}, context_instance=RequestContext(request))

forms.py

from django import forms
from settings import MEDIA_ROOT

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length = 50)
    file = forms.FileField()

    def handle_uploaded_file(self,file):
        #print type(file), "file.name=",file.name
        #print dir(file)
        destination = open(MEDIA_ROOT + '/images/'+file.name, 'wb+')
        for chunk in file.chunks():
            destination.write(chunk)

Ich möchte noch einen Schritt weiter gehen und dem Benutzer, der das Bild hochlädt, ein Bild zuordnen. Ich habe ein paar Beispiele gesehen und die Technik in diesem Beitrag gemocht:https: //stackoverflow.com/questions/3348013/django-image-file-uploads

Ich habe festgestellt, dass der Code save () und cleaner_data verwendet. Ist es nicht erforderlich, die Blöcke zu durchlaufen und in den Zielordner zu schreiben, wie in den Beispielen in der Dokumentation beschrieben? Muss ich cleaner_data verwenden? Beim Versuch, die effizientesten Methoden zum Hochladen von Dateien herauszufinden, habe ich so viele verschiedene Möglichkeiten gesehen, dies zu tun. Ihre Hilfe Sie sehr geschätzt werden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage