如何解决在Django中上传图片时出错:“强制转换为Unicode:需要字符串或缓冲区,找到元组”
| 尝试在Django中使用ImageField。 这是我的模特class Album(models.Model):
title = models.CharField(max_length=100)
def __unicode__(self):
return self.title
class Photo(models.Model):
image = models.ImageField(upload_to=\'photos/\')
album = models.ForeignKey(Album)
title = models.CharField(max_length=100,default=\"\")
def __unicode__(self):
return self.title
class PhotoModelForm(forms.ModelForm):
class Meta:
model = Photo
这是urls.py的一部分
...
url(r\'^trial/upload/$\',\'trial.views.upload\'),...
views.py
def upload(request):
if request.method == \'POST\':
form = PhotoModelForm(request.POST,request.FILES)
if form.is_valid():
photo = form.save()
return render_to_response(\'trial/thanks_upload.html\',{
\'photo\': photo
},context_instance = RequestContext(request))
else:
form = PhotoModelForm()
return render_to_response(\'trial/upload.html\',{
\'form\': form
},context_instance = RequestContext(request))
upload.html
<form enctype=\"multipart/form-data\" action=\"/trial/upload/\" method=\"post\">
{% csrf_token %}
{% for field in form %}
<div class=\"fieldWrapper\">
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
<p><input type=\"submit\" value=\"Upload\" /></p>
</form>
但是在保存时,我有下一个错误:
在/ trial / upload /的TypeError
强制转换为Unicode:需要字符串或缓冲区,找到元组
错误出现在photo.save上
有人知道为什么会这样吗?为什么元组会出现?我确定有一个愚蠢的错误...
解决方法
我自己弄的。在settings.py中有MEDIA_ROOT设置,
MEDIA_ROOT = \'d:/dev/python/scripts/app/media/\',
Python由于末尾的逗号而使对象成为元组。这就是为什么它无法保存对象的原因。下次看你的逗号!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。