在Django UpdateView中调整大小并重命名图像

时间:2013-10-09 09:00:04

标签: django django-forms

当用户在Django的UpdateView中上传图像时,我希望能够创建3种不同大小的图像。

我还希望能够将他们上传的文件重命名为username_thumb_01.jpg,username_original_01.jpg,username_medium_01.jpg。

views.py

class UserProfileEditView(UpdateView):
    model = UserProfile
    form_class = UserProfileForm
    template_name = "edit_profile.html"

forms.py

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User, unique=True)  
    website = models.URLField(null=True, blank=True)
    avatar = models.ImageField(upload_to="user-photos", null=True, blank=True) 

我尝试在我的UserProfileEditView中添加如下内容,但它没有用,我不确定如果我在正确的轨道上。

def form_valid(self, form):
    if self.request.files:
          filename= join(settings.MEDIA_ROOT, profile.avatar.name)
          im = Image.open(filename)
          im.thumbnail((160,160), Image.ANTIALIAS)
          im.save(imfn, "JPEG")
          form.save

以前有人这样做过吗?我怎么能完成它?

2 个答案:

答案 0 :(得分:1)

虽然他们的方法不同但我建议使用sorl-thumbnail。它们在上传时不是创建图像,而是在需要时创建图像,然后使用您指定的任何缓存系统对它们进行缓存。

答案 1 :(得分:0)

我是通过使用自定义图像字段来完成此操作的。它的代码可以在https://github.com/hellsgate1001/django-thumbs的github上找到。

我没有创建这个,我分叉它为缩略图创建增加了一点灵活性,并确保它适用于Django 1.5