【发布时间】:2017-04-19 22:15:39
【问题描述】:
我正在尝试将文件验证添加到我的 Django 项目中。在我尝试添加一个解析文件的 python 库之前,我想确保我可以检查文件大小、扩展名和内容类型。对于 forms.py 中的模型表单,我有:
class PostForm(forms.ModelForm):
def clean_audio_file(self, form):
file = self.cleaned_data.get('sound')
if file:
if file._size > 4*1024*1024:
raise ValidationError("Audio file too large ( > 4mb )")
if not file.content-type in ["audio/mpeg","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 = [
'title',
'longitude',
'latitude',
'sound',
]
在我看来,我有:
def post_create(request):
form= PostForm(request.POST or None, request.FILES or None)
form_class = PostForm()
if form.is_valid():
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)
我已经浏览了几次文档,并寻找了类似文件验证的示例,但由于某种原因,我上传的文件没有得到验证。该表单按预期工作,但它仍然允许文件太大和文件类型不正确,而不会引发验证错误。关于我哪里出错的任何提示?
【问题讨论】:
标签: python django forms validation audio