我正在创建一个网站,用户可以在其中上传音乐文件,并将其保存在目录中。因此,我添加了以下html表单:
<form action='upload/' method='POST' enctype="multipart/form-data">{% csrf_token %}
<input type="file" name="file">
<input type="submit" name="">
</form>
我已经成功配置了网址以处理此请求。这是该网址指向的视图:
def uploadMusic(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['file'])
return HttpResponse('Success')
else:
return HttpResponse('Could not verify')
else:
form = UploadFileForm()
return HttpResponse('Failed')
此外,我希望在将音乐文件保存到目录之前对其进行验证。我希望文件大小小于4mb。在我的forms.py文件中,添加了以下代码:
from django import forms
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
def clean(self):
file = self.cleaned_data.get('file', False)
if file:
if file._size > 4*1024*1024:
return 'Error'
else:
return file
else:
raise forms.ValidationError('Wrong')
好吧,问题是,我无法正常工作。我没有收到任何错误,但尽管文件大小,但文件已成功上传。 PS:我是初学者
答案 0 :(得分:0)
检查您是否还有逻辑
if file:
如果有任何文件进入,将始终为真。
if file._size > 4*1024*1024:
return 'Error'
将返回错误字符串,但不会引发任何实际错误 简而言之
else:
raise forms.ValidationError('Wrong')
将永远不会被执行