【问题标题】:Django File Upload With Veritication Doesn't Work带有验证的 Django 文件上传不起作用
【发布时间】:2019-03-10 06:55:37
【问题描述】:

我正在创建一个网站,用户可以在其中上传音乐文件并将其保存在目录中。所以我添加了以下html表单:

<form action='upload/' method='POST' enctype="multipart/form-data">{% csrf_token %}
        <input type="file" name="file">
        <input type="submit" name="">
</form>

我已成功配置 URL 来处理此请求。这是这个 url 指向的视图:

def uploadMusic(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
            return HttpResponse('Success')
        else:
            return HttpResponse('Could not verify')
    else:
        form = UploadFileForm()
        return HttpResponse('Failed')

另外,我希望在将音乐文件保存到目录之前对其进行验证。我希望文件大小小于 4mb。在我的 forms.py 文件中,我添加了以下代码:

from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file = forms.FileField()

    def clean(self):
        file = self.cleaned_data.get('file', False)
        if file:
            if file._size > 4*1024*1024:
                return 'Error'
            else:
                return file
        else:
            raise forms.ValidationError('Wrong')

好的,问题是,我无法让它工作。我没有收到任何错误,但尽管文件大小,但文件已成功上传。 PS:我是初学者

【问题讨论】:

    标签: django forms validation


    【解决方案1】:

    检查你是否符合逻辑

     if file:
    

    如果有任何文件进入,则始终为 true。

    if file._size > 4*1024*1024:
       return 'Error'
    

    将返回错误字符串但不会引发任何实际错误 总之

    else:
        raise forms.ValidationError('Wrong')
    

    永远不会被执行

    【讨论】:

    • 成功了。一个简单的问题,为什么我们要在cleaned_data 函数中传递“文件”?和表单输入名称有关系吗?
    猜你喜欢
    • 2014-12-24
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 2023-04-06
    • 2016-01-29
    相关资源
    最近更新 更多