Edit: Proszę używać odpowiedź wybraną powyżej - poniżej kod działa na pytanie, ale nie jest to zalecane.
Plik obrazu przesyłasz można znaleźć w:
request.FILES['image'] # assuming input name is called 'image'
To nie zwróci ci obiektu obrazu, ale raczej obiekt UploadedFile. Możesz przeczytać tę część dokumentacji (zakładam, że używasz Django 1.3.x): https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files
Obejmuje pola i metody dostępne w obiekcie UploadedFile, a także popularny sposób ręcznego przesyłania plików. Możesz użyć tej samej metody, aby zapisać plik obrazu do obiektu pliku, a następnie zapisać go w ImageField.
Poniższy kod powinien zadziałać, ale nie jest to bezpieczny kod. Zakładam, że używasz * maszyny nix, jeśli nie, zapisz plik docelowy gdzie indziej.
@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
Inne rzeczy do odnotowania: Upewnij się, że postać ma następujący atrybut do jego pracy:
<form enctype="multipart/form-data" ... >
Nie pamietam to zużycie jest normalne, ale tak naprawdę, formularze są zalecane.
przyjrzeć się [django-photologue] (http://code.google.com/p/django-photologue/), wszystko, co chcesz zrobić, zostało już zrobione :) – juliomalegria
dziękuję, nie potrzebuję tych wszystkich funkcji, szukam najbardziej podstawowych użycie imageField :) –