Django - 保存上传的图像
Django - Save an uploaded image
我有一个要上传图片的表单,但我无法保存图片。表格中除图像外的其他所有内容均正常工作。
我确定我的 addGame
方法存在一些问题,但我已经尝试了数十种不同的方法,但都没有成功。
我已经完成了 documentation,但似乎我还是做错了,因为图像从未保存过。
(附带说明:我正在使用 Pillow 来裁剪图像,我也不确定我是否正确地进行了裁剪,但我最近刚刚添加了它,并且由于图像没有'保存我无法知道它是否正确实施。我在尝试让上传工作时将裁剪部分注释掉。)
forms.py
class GameForm(forms.ModelForm):
image = forms.ImageField()
code = forms.Textarea()
deleteGame = forms.BooleanField(required=False, widget=forms.HiddenInput())
class Meta:
model = Game
fields = ('title', 'image', 'description', 'requirements', 'code', 'deleteGame')
views.py
:
@login_required
def add_game(request):
user = request.user
if request.method == 'POST':
form = GameForm(request.POST, request.FILES)
if form.is_valid():
form = form.save(commit=False)
image = request.FILES['image']
box = (200, 200, 200, 200)
cropped = image.crop(box)
form.image = cropped
form.user = request.user
form.save()
return HttpResponseRedirect('/userprofile')
else:
form = GameForm()
args = {}
args.update(csrf(request))
args['user'] = user
args['form'] = form
return render_to_response('addgame.html', args)
models.py
class Game(models.Model):
user = models.ForeignKey(User, blank=True)
title = models.CharField(max_length=256)
image = models.ImageField(upload_to='games', blank=True)
description = models.CharField(max_length=256)
requirements = models.CharField(max_length=256)
code = models.TextField()
deleteGame = models.BooleanField(default=False)
def __unicode__(self):
return self.title
我的媒体设置如下所示:
MEDIA_ROOT = 'media/'
MEDIA_URL = '/media/'
文件结构:
如果我通过管理门户添加图片,它会正确保存,但我的日志中会出现这样的错误:
Not Found: /media/games/Screen_Shot_2015-12-29_at_1.03.05_AM.png
如果您打算将文件与表单数据一起发送,则模板的 form
标记中需要 enctype="multipart/form-data"
。
我有一个要上传图片的表单,但我无法保存图片。表格中除图像外的其他所有内容均正常工作。
我确定我的 addGame
方法存在一些问题,但我已经尝试了数十种不同的方法,但都没有成功。
我已经完成了 documentation,但似乎我还是做错了,因为图像从未保存过。
(附带说明:我正在使用 Pillow 来裁剪图像,我也不确定我是否正确地进行了裁剪,但我最近刚刚添加了它,并且由于图像没有'保存我无法知道它是否正确实施。我在尝试让上传工作时将裁剪部分注释掉。)
forms.py
class GameForm(forms.ModelForm):
image = forms.ImageField()
code = forms.Textarea()
deleteGame = forms.BooleanField(required=False, widget=forms.HiddenInput())
class Meta:
model = Game
fields = ('title', 'image', 'description', 'requirements', 'code', 'deleteGame')
views.py
:
@login_required
def add_game(request):
user = request.user
if request.method == 'POST':
form = GameForm(request.POST, request.FILES)
if form.is_valid():
form = form.save(commit=False)
image = request.FILES['image']
box = (200, 200, 200, 200)
cropped = image.crop(box)
form.image = cropped
form.user = request.user
form.save()
return HttpResponseRedirect('/userprofile')
else:
form = GameForm()
args = {}
args.update(csrf(request))
args['user'] = user
args['form'] = form
return render_to_response('addgame.html', args)
models.py
class Game(models.Model):
user = models.ForeignKey(User, blank=True)
title = models.CharField(max_length=256)
image = models.ImageField(upload_to='games', blank=True)
description = models.CharField(max_length=256)
requirements = models.CharField(max_length=256)
code = models.TextField()
deleteGame = models.BooleanField(default=False)
def __unicode__(self):
return self.title
我的媒体设置如下所示:
MEDIA_ROOT = 'media/'
MEDIA_URL = '/media/'
文件结构:
如果我通过管理门户添加图片,它会正确保存,但我的日志中会出现这样的错误:
Not Found: /media/games/Screen_Shot_2015-12-29_at_1.03.05_AM.png
如果您打算将文件与表单数据一起发送,则模板的 form
标记中需要 enctype="multipart/form-data"
。