【问题标题】:Django file validation errorDjango文件验证错误
【发布时间】:2017-10-02 01:59:54
【问题描述】:

我一直在为文件验证而苦苦挣扎,但我认为我在正确的轨道上。当我发布表单时,我正在尝试验证音频文件“声音”。每当我尝试提交表单时,我都会收到一个'InMemoryUploadedFile' object has no attribute 'content'。问题似乎发生在 form.is_valid() 上。到目前为止,我有以下表格:

class PostForm(forms.ModelForm):
    def clean_sound(self):
        file = self.cleaned_data.get('sound',False)
        if file:
            if not file.content-type in ["audio/mpeg","audio/mp3", "audio/wav"]:
                raise ValidationError("Content-Type is not mpeg")
            if not os.path.splitext(file.name)[1] in [".mp3",".wav"]:
                raise ValidationError("Doesn't have proper extension")
            return file
        else:
            raise ValidationError("Couldn't read uploaded file")




    class Meta:
        model = Places
        fields = [

            'usersave',
            'title',
            'longitude',
            'latitude',
            'sound',

        ]

在视图中:

@login_required(login_url='/accounts/login/')
def post_create(request):
    form= PostForm(request.POST or None, request.FILES or None)


    if form.is_valid():

        # handle_uploaded_file(request.FILES['sound'])
        instance = form.save(commit=False)
        instance.save()
        messages.success(request, 'Successfully Created')
        return HttpResponseRedirect('/')


    context= {
        'form': form,
    }
    return render(request, 'location/post_form.html',context,)

我不确定“InMemoryUploadedFile”错误是什么,非常感谢任何可以为我指明正确方向的建议!

【问题讨论】:

    标签: python django forms validation


    【解决方案1】:

    想发表评论,但还没有足够的声誉。

    如果您查看source code,您似乎必须先致电open() 才能访问其内容。类实例本身 file = self.cleaned_data.get('sound', False) 没有错误中所述的 content 属性。您可以先尝试打开文件吗?

    【讨论】:

      【解决方案2】:

      试试这个

      file = self.cleaned_data.get('sound')

      您是否尝试上传相同的音频文件并收到错误消息?或者您也尝试过使用其他音频文件?

      【讨论】:

        猜你喜欢
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-24
        • 2016-03-20
        • 2011-02-21
        • 1970-01-01
        相关资源
        最近更新 更多