2

ファイルが設定値よりも大きいかどうかをチェックする小さな関数を書きました。しかし、どういうわけか機能していません。私は 50 MB の制限を設定しましたが、100 MB のデータをアップロードしようとしても、アップロードできます。これは私の forms.py クラスと関数です

from django.template.defaultfilters import filesizeformat

class ScribbleSaveForm(forms.Form):
    title=forms.CharField(
      label=u'Title',
      required=False,
      widget=forms.TextInput(attrs={'size':120})
    )
    media=forms.FileField(
      label=u'add file',
      required=False,
      widget=forms.FileInput()
    )
    body=forms.CharField(
      label=u'description',
      widget=forms.Textarea()
    )
    tags=forms.CharField(
      label=u'Tags',
      required=False,
      widget=forms.TextInput(attrs={'size':64})
    )
    def file_size(self):
            media=self.cleaned_data.get('media',False)
            if media:
                if media._size > 50*1024*1024 :
                    raise forms.ValidationError('Please keep filesize under 50MB.')
                return media
            else:
                raise forms.ValidationError('Could not read uploaded file.')
4

1 に答える 1

2

file_size の名前を clean_media に変更する必要があります。https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attributeを参照してください

また、検証するかどうかにかかわらず、クリーニングしているものを常に返すようにしてください。

于 2012-08-25T00:24:19.090 に答える