我看到很多关于django验证器没有给出正确响应的问题,但我有一个不同的问题。尽管从Django文档示例复制,我甚至不会触发。下面是我有:Django表单验证没有被触发
models.py
def content_file_name(instance, filename):
ext = ''.join(filename.split())[:-4]
foldername = "%s/%s" % (uuid.uuid4(), ext)
return '/'.join(['documents', str(foldername), filename])
class Document(models.Model):
docfile = models.ImageField(upload_to=content_file_name)
class DocumentImage(models.Model):
imagefile = models.ImageField(upload_to=content_file_name)
image = models.ForeignKey(Document, related_name='Image', null=True, on_delete=models.CASCADE)
views.py
def documentlist(request):
# Handle file upload
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = form.save()
newdoc.create_documentfiles()
messages.add_message(request, messages.INFO, "Saved")
return HttpResponseRedirect(reverse('list'))
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
# Render list page with the documents and the form
return render(
request,
'list.html',
{'documents': documents, 'form': form}
)
forms.py
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
fields = ('docfile',)
def clean_image(self):
file = self.cleaned_data.get('docfile')
if file:
if imghdr.what(file.read()) != "gif":
raise forms.ValidationError("Please upload a .gif file")
print('complete');
file.seek(0)
return file
我甚至尝试设置forms.py这样的:
def clean_image(self):
print('test')
raise forms.ValidationError("Please upload a .gif file")
我仍然得到既不ValidationError
也不test
打印控制台。有没有人遇到过这样的问题?
哦,不知道他们有相关性。非常感谢! –