Django ImageField: 文件未上传

1 投票
1 回答
1713 浏览
提问于 2025-04-16 05:48

我在我的模型里实现了一些图片字段,并安装了PIL(安装得不是很干净)。一切看起来都正常,因为在后台我能看到上传按钮,当我在视图中调用.url属性时,也能得到文件名加上它的上传属性的字符串。

但问题是,文件并没有被上传,似乎在我保存模型的时候并没有成功上传文件。

有没有什么想法?

谢谢

这是我代码的一个示例情况:

models.py

class My_Model(models.Model):
[...]
     image = models.ImageField(upload_to = 'images/my_models/main')

view.py

'image': query.my_model.image.url

结果:

static/images/my_models/main/theimage.png

1 个回答

1

确保在发送POST请求时,你把request.FILES绑定到表单上,并且在模板中将表单声明为多部分(multi-part)。

下面是我某个应用中的视图代码:

@login_required
def submit(request):
    if request.method == 'POST':
        (Photo.objects.count()+1, request.FILES['photo'].name.split(".")[1]), request.FILES['photo'])}
        form = PhotoForm(request.POST, request.FILES)
        if form.is_valid():
            new = Photo(photo=request.FILES['photo'], name=request.POST['name'])
            new.save()          
            return HttpResponseRedirect('/') # Redirect after POST
    else:
        form = PhotoForm()
    return render_to_response('app/submit.html', {'form': form}, context_instance=RequestContext(request))

还有PhotoForm类的代码:

class PhotoForm(forms.ModelForm):
    class Meta:
        model = Photo
        fields = ('name', 'photo')

撰写回答