Django 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 个回答
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')