【发布时间】:2019-12-12 22:44:37
【问题描述】:
我是 django 的菜鸟,无法在我的代码中找出问题所在。基本上我正在尝试使用表单将一些图像上传到我的服务器。每当我保存表单时,它只会采用模型中指定的默认图像,而不是我在表单中上传的图像。
print(request.Files) 在调用 form.is_valid() 之前给出的输出为:
<MultiValueDict: {'id_image01': [<InMemoryUploadedFile: image01.jpg (image/jpeg)>], 'id_image02': [<InMemoryUploadedFile: image02.jpg (image/jpeg)>], 'id_image03': [<InMemoryUploadedFile: image04.jpg (image/jpeg)>], 'id_image04': [<InMemoryUploadedFile: image07.jpg (image/jpeg)>]}>
我认为图像已正确加载到内存中。
我的代码是这样的:
views.py
def create_puzzle(request):
if request.method == 'POST':
print(request.FILES)
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
puzzleImages= form.save(commit=False)
puzzleImages.username= request.user.username
puzzleImages.save()
return redirect('/puzzle/index.html')
else:
form = DocumentForm()
return render(request, 'puzzle/create_puzzle.html', {
'form': form
})
我的 Forms.py
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
fields = ('birthday_message', 'video_url', 'image01',
'image02', 'image03','image04',
'image05', 'image06', 'image07',
'image08', 'image09', 'image10')
captcha = ReCaptchaField(
public_key='###########',
private_key='###########',
)
我的模型.py
class Document(models.Model):
description = models.CharField(max_length=255, blank=True)
image01 = models.ImageField(default='default/image01.png', upload_to=user_directory_path)
image02 = models.ImageField(default='default/image02.png', upload_to=user_directory_path)
image03 = models.ImageField(default='default/image03.png', upload_to=user_directory_path)
image04 = models.ImageField(default='default/image04.png', upload_to=user_directory_path)
image05 = models.ImageField(default='default/image05.png', upload_to=user_directory_path)
image06 = models.ImageField(default='default/image06.png', upload_to=user_directory_path)
image07 = models.ImageField(default='default/image07.png', upload_to=user_directory_path)
image08 = models.ImageField(default='default/image08.png', upload_to=user_directory_path)
image09 = models.ImageField(default='default/image09.png', upload_to=user_directory_path)
image10 = models.ImageField(default='default/image10.png', upload_to=user_directory_path)
username = models.CharField(max_length=255, blank=False)
birthday_message=models.CharField(default='Happy Birthday Special One!!!', max_length=500)
video_url=models.CharField(default='https://www.youtube.com/watch?v=A9jl1yLURp4', max_length=100)
uploaded_at = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs):
#print (self.image01)
#print(self.birthday_message)
if not self.id:
self.image01 = self.compressImage(self.image01, "image01")
self.image02 = self.compressImage(self.image02, "image02")
self.image03 = self.compressImage(self.image03, "image03")
self.image04 = self.compressImage(self.image04, "image04")
self.image05 = self.compressImage(self.image05, "image05")
self.image06 = self.compressImage(self.image06, "image06")
self.image07 = self.compressImage(self.image07, "image07")
self.image08 = self.compressImage(self.image08, "image08")
self.image09 = self.compressImage(self.image09, "image09")
self.image10 = self.compressImage(self.image10, "image10")
super(Document, self).save(*args, **kwargs)
感谢您的帮助!
【问题讨论】:
-
嗨@abhisekG你能分享你的html页面吗?