Editar: favor utilice la respuesta elegida por encima de - el código de abajo funciona para la pregunta, pero no se recomienda.
El archivo de imagen se va a cargar se puede encontrar en:
request.FILES['image'] # assuming input name is called 'image'
no le devuelven un objeto de imagen, sino más bien un objeto UploadedFile. Puede leer esta parte de los documentos (supongo que está utilizando Django 1.3.x): https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files
Cubre los campos y métodos disponibles en el objeto UploadedFile, y también una forma común de manejar cargas de archivos manualmente. Puede usar el mismo método para escribir el archivo de imagen en un objeto de archivo y luego guardarlo en su ImageField.
El siguiente código debería funcionar, pero no es un código seguro. Supongo que está utilizando la máquina * nix, si no, guarde el archivo de destino en otro lugar.
@csrf_exempt
def saveImage(request):
# warning, code might not be safe
up_file = request.FILES['image']
destination = open('/tmp/' + up_file.name , 'wb+')
for chunk in up_file.chunks():
destination.write(chunk)
destination.close()
img = someImage()
img.image.save(up_file.name, File(open('/tmp/' + up_file.name, 'r')))
img.save()
# return any response you want after this
Otras cosas para tomar nota: Asegúrese de que la forma tiene el atributo siguiente para que funcione:
<form enctype="multipart/form-data" ... >
no recuerdo este uso es normal, pero en realidad, se recomiendan las formas.
echar un vistazo a [Django-photologue] (http://code.google.com/p/django-photologue/), todo lo que quiere hacer ya está hecho :) – juliomalegria
gracias, no necesito todas estas características, estoy buscando las más básicas uso de imageField :) –