Django 文件大小检查不起作用

标签 django django-forms

我编写了一个小函数来检查文件是否大于设定值。但不知何故它不起作用。我将限制设置为 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.')

最佳答案

您的做法是正确的,您应该将 file_size 重命名为 clean_media。请参阅https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute

此外,请确保您始终返回正在清理的内容,无论是否验证。

关于Django 文件大小检查不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117371/

相关文章:

python - 更新到 1.11 : TypeError build_attrs() takes at most 2 arguments (3 given)

django - from rest_framework.filters import SearchFilter 生成错误,因为无法从 'django.db 导入名称 'ORDER_PATTERN'

python - Django 表格 : Get selected item from ModelChoiceField?

django - django admin中的表单字段描述

django - 如何通过额外的 kwargs 在 django 模型集工厂中形成?

django - 包括显示表单的模板

python - Django: ForeignKey Filter 查询Form中选中的数据

Django:调用没有url映射的 View 函数

python - Django 中的计数字段?

django - 大文件上传到 Django Rest Framework