相关疑难解决方法(0)

文件上传时的最大图像大小

我的形式有一个ImageField.我如何强制执行文件大小最小/最大,类似于 -

image = forms.ImageField(max_size = 2MB) 
Run Code Online (Sandbox Code Playgroud)

要么

image = forms.ImageField(min_size = 100k)
Run Code Online (Sandbox Code Playgroud)

谢谢.

django image-processing django-forms

43
推荐指数
3
解决办法
3万
查看次数

'ImageFieldFile' 对象只有在图片已经上传之后才没有属性 'content_type' 然后既不更改也不删除

我正在开发一个同时使用 django 注册和 django 配置文件的项目。我有一个允许用户编辑/创建个人资料的表单,其中包括上传照片。在以下情况下一切正常:创建或编辑配置文件并且从未上传过任何图像;编辑/创建配置文件并上传图像;上传图像后,只要更改或删除先前上传的图像,就可以编辑配置文件......我遇到问题的地方是是否存在现有的配置文件图像,并且用户尝试编辑他的/她的配置文件而不对当前图像进行任何更改(即删除或替换它)。在这种情况下,我收到错误“ImageFieldFile”对象没有属性“content_type”。关于为什么会发生这种情况的任何想法。我已经尝试了在堆栈溢出中找到的其他答案的变体,但无法让它们中的任何一个像它们所说的那样工作。我目前拥有的是我所做的更改之一的变体:

class UserProfileForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(UserProfileForm, self).__init__(*args, **kwargs)
        try:
            self.fields['email'].initial = self.instance.user.email
        except User.DoesNotExist:
            pass

    email = forms.EmailField(label="Primary email", help_text='')

    class Meta:
        model = UserAccountProfile
            exclude = ('user', 'broadcaster', 'type')
            widgets = {
            ...
        }


    def save(self, *args, **kwargs):
        u = self.instance.user
        u.email = self.cleaned_data['email']
        u.save()
        profile = super(UserProfileForm, self).save(*args,**kwargs)
        return profile

    def clean_avatar(self):
        avatar = self.cleaned_data['avatar']            

        if avatar:
            w, h = get_image_dimensions(avatar)
            max_width = max_height = 500
            if w >= max_width or h …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms django-profiles

3
推荐指数
1
解决办法
8052
查看次数