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"