Форум сайта python.su
Здравствуйте!
Помогите найти хороший годный пример аплоада изображений на сервер, их дальнейше обработки (например, ресайза) и сохранения в БД. Нашел несколько примеров о том, как созадть модель:
class MyImage(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=250)
image= models.ImageField(upload_to='images')
class ImageUploadForm(forms.Form):
name = forms.CharField(max_length=30)
description = forms.CharField(max_length=250)
image = forms.ImageField()
def picview(request):
if request.method == 'POST':
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
#Обработка проверенных данных - ?
else:
...
return ....
Офлайн
Я делаю так:
def handle_uploaded_file(f, filename):
""" загрузка файла """
destination = open(filename, 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
...
if form.is_valid():
...
handle_uploaded_file(request.FILES['f'], 'some_filename')
...
А потом уже можно PIL:
thumbnail_image = Image.open(l_image.image)
thumbnail_image.thumbnail((100, thumbnail_image.size[1]-10), Image.ANTIALIAS)
...
Отредактировано (Окт. 3, 2009 16:01:25)
Офлайн
LolkaПоясните, пожалуйста, откуда взялась переменная l_image.
Image.open(l_image.image)
Отредактировано (Окт. 3, 2009 18:53:08)
Офлайн
Здесь thumbnail_image = Image.open(l_image.image) – просто обычный путь к файлу прописывается. Скажем, в вашем случае если l_image это объект класса MyImage – будет работать.
Если сделать форму forms.ModelForm, тогда всех танцев с бубном танцевать не надо, достаточно сделать form.save().
В противном случае handle_uploaded_file сохраняет файл, скажем, с именем filename, а создание строки будет работать так: MyImage.objects.create(name=form.cleaned_data, description=form.cleaned_data, image=filename).
Отредактировано (Окт. 3, 2009 21:55:33)
Офлайн
LolkaВот, что мне было нужно! Спасибо!
Если сделать форму forms.ModelForm, тогда всех танцев с бубном танцевать не надо, достаточно сделать form.save().
Офлайн