【问题标题】:Django, Pillow, NotImplementedError - absolute pathsDjango,枕头,NotImplementedError - 绝对路径
【发布时间】:2017-07-17 16:08:07
【问题描述】:

我在调整大小后将用户头像上传到 S3。我的 ModelForm 如下:

class UserAvatarForm(forms.ModelForm):
    x = forms.FloatField(widget=forms.HiddenInput())
    y = forms.FloatField(widget=forms.HiddenInput())
    width = forms.FloatField(widget=forms.HiddenInput())
    height = forms.FloatField(widget=forms.HiddenInput())

    class Meta:
        model = UserProfile
        fields = ('id', 'img', 'x', 'y', 'width', 'height')

    def save(self, *args, **kwargs):
        photo = super(UserAvatarForm, self).save()

        x = self.cleaned_data.get('x')
        y = self.cleaned_data.get('y')
        w = self.cleaned_data.get('width')
        h = self.cleaned_data.get('height')

        image = Image.open(photo.img)
        cropped_image = image.crop((x, y, w+x, h+y))
        resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS)
        resized_image.save(photo.img.path)

        return photo

NotImplementedError at /profile/avatar/ 此后端不支持 绝对路径。

我看到我可以编辑保存方法以使用File Storage API,但我不知道如何实现它。有什么帮助吗?谢谢

【问题讨论】:

    标签: image storage django-1.11


    【解决方案1】:

    这使它工作;我会把它留在这里以供将来参考:

    def save(self, *args, **kwargs):
        photo = super(UserAvatarForm, self).save()
    
        x = self.cleaned_data.get('x')
        y = self.cleaned_data.get('y')
        w = self.cleaned_data.get('width')
        h = self.cleaned_data.get('height')
    
        image = Image.open(photo.img)
        cropped_image = image.crop((x, y, w+x, h+y))
        resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS)
        storage_path = storage.open(photo.img.name, "wb")
        resized_image.save(storage_path, 'png')
        storage_path.close()
    
        return photo
    

    【讨论】:

    • 在尝试了很多复杂的方法后终于得到了正确的答案。顺便说一句,如果有人正在寻找如何导入这个 storage.open(...... 'storage'。使用这个 `` from django.core.files.storage import default_storage as storage `` for Django == 2.2
    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多