【发布时间】: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