我正在努力上传使用Django。我尝试上传它时没有收到错误,并保存了新项目,但没有图像。其他表格数据都在那里。在过去的两天里,我一直在谷歌搜索和堆栈溢出,无法找到解决方案。我甚至都不知道哪里出错了!任何建议都会很棒。非常感谢。 :)
来自views.py的:
if request.method == 'POST':
form = ItemForm(request.POST, request.FILES, user=request.user, forsale=True)
if form.is_valid():
new_item = form.save()
return item_view(request, marketplace_id, new_item.id)
else:
form = ItemForm(user=request.user)
来自models.py的:
class Item(models.Model):
photo = StdImageField(upload_to='images/', blank=True, size=(500, 500, True), thumbnail_size=(210, 150, True))
user = models.ForeignKey(User)
...
def __unicode__(self):
return self.name
class ItemForm(ModelForm):
class Meta:
model = Item
fields = ['name', 'description', 'price', 'shipping', 'photo', 'section']
def __init__(self, *args, **kwargs):
self._user = kwargs.pop('user')
super(ItemForm, self).__init__(*args, **kwargs)
来自模板:
<form enctype="multipart/form-data" action="" method="post" data-ajax="false">{% csrf_token %}
{% for field in form %}
<div class="fieldWrapper" data-role="fieldcontain">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
<input type="submit" value="Save">
</form>
我认为,模板是正确的。 Item模型似乎很好,StdImageField是ImageField的包装器。它在管理面板中工作正常。 表格似乎也很好,没什么特别的。 在我的views.py中,我检查一个POST请求,调用ItemForm并传入request.POST和request.FILES(和forsale这是一个布尔值)。我检查表单是否有效,如果是,我保存。为什么不工作?项目保存,但在管理面板中没有与“照片”相关联的文件。
答案 0 :(得分:0)
检查与“images /”连接的MEDIA_ROOT设置是否为Django进程的有效且可写路径。
还使用pdb
import pdb; pdb.set_trace()
可以帮助你找到问题,(f.i.看一下request.FILES看看帖子中的所有内容是否正常)。