0

ユーザーが Django の UpdateView で画像をアップロードするときに、3 つの異なるサイズの画像を作成できるようにしたいと考えています。

また、アップロードするファイルの名前を username_thumb_01.jpg、username_original_01.jpg、username_medium_01.jpg などに変更できるようにしたいと考えています。

ビュー.py

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

フォーム.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

誰もこれを以前にやったことがありますか?どうすればそれを達成できますか?

4

2 に答える 2

1

アプローチは異なりますが、sorl-thumbnailを使用することをお勧めします。アップロード時に画像を作成する代わりに、必要なときに画像を作成し、指定したキャッシュ システムを使用して画像をキャッシュします。

于 2013-10-09T09:21:02.933 に答える
0

カスタム画像フィールドを使用してこれを行います。そのコードは、 https://github.com/hellsgate1001/django-thumbsの github で入手できます。

私はこれを作成しませんでした。サムネールの作成にもう少し柔軟性を追加し、Django 1.5 で確実に動作するようにフォークしました。

于 2013-10-09T09:05:51.657 に答える