Djangoプロジェクトにファイルの検証を追加しようとしています。ファイルを解析するPythonライブラリを追加して追加する前に、ファイルサイズ、拡張子、およびコンテンツタイプを確認できるようにしたいと考えています。 forms.pyの私のモデルフォームのために私が持っている:私のビューのためのDjangoオーディオファイル形式の検証
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)
何らかの理由で私がアップロードしたファイルは検証されていません。フォームは期待どおりに動作しますが、検証エラーを発生させることなく、大きすぎるファイルタイプと不正確なファイルタイプを許可します。私が間違っているところのヒント?