Django ImageField:文件不上传

时间:2010-10-20 19:13:16

标签: python django django-models django-admin python-imaging-library

我在我的模型中实现了一些ImageField并安装了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 个答案:

答案 0 :(得分:1)

确保在POSTing时将request.FILES绑定到表单,并且表单在模板中声明为多部分

以下是我的一个应用程序的视图:

@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')