Django文件验证错误
问题描述:
我一直在努力与文件验证一段时间,但我认为我在正确的轨道上。我在发布表单时试图验证音频文件'声音'。每当我尝试提交表单时,我都会收到一个'InMemoryUploadedFile' object has no attribute 'content'
。这个问题似乎发生在form.is_valid()。到目前为止,我有形式:Django文件验证错误
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”的错误是什么,以及将非常感激,可以点我的任何意见正确的方向!
答
想评论,但没有足够的声望呢。
如果你看看source code看来你必须先拨打open()
才能访问它的内容。类实例本身file = self.cleaned_data.get('sound', False)
没有如错误中所述的content
属性。你可以尝试先打开文件吗?
答
试试这个
文件= self.cleaned_data.get( '声音')
和
你要上传的相同的音频文件,并收到错误?或者您也尝试过使用其他音频文件?