我没有在数据库中保存图像路径,也没有图像保存在文件系统中。保存项目金额,因为不需要图像。 views.py
def add_item(request, item_id):
if request.method == 'POST':
if request.is_ajax():
form = ItemForm(request.POST, request.FILES)
if form.is_valid():
user = request.user
title = form.cleaned_data['title']
content = form.cleaned_data['content']
image = form.cleaned_data['image']
item = Item.objects.get(id=item_id)
item.add_child(user=user, title=title, content=content, image=image) # add_child() because of using django-treebeard
return HttpResponse('')
else:
return HttpResponse('')
else:
return HttpResponse('')
jquery的:
$('#form_for_item').live('submit', function(){
var data = $("#form_for_item").serialize();
var url = '/something/add_item/' + $('#form_for_item').attr('name') + '/';
$.ajax({
type: 'POST',
url: url,
data: data,
success: function(){
$('#my_form').children().remove();
}
});
return false;
});
我还尝试将image
表单添加到我的add_item(request, item_id)
函数中添加以下行:
from django.core.files.uploadedfile import SimpleUploadedFile
image = SimpleUploadedFile(request.META['HTTP_X_FILE_NAME'],request.raw_post_data)
但没有帮助 如何保存通过ajax发送的图像?
答案 0 :(得分:1)
我认为其中一个问题可能是普通的jQuery AJAX请求不会发送内容类型为multipart/form-data
的表单数据。有关如何使用jQuery通过AJAX发送表单数据的更多信息,请查看this question。
此解决方案似乎不是100%跨浏览器兼容。解决方法可能是在iframe中显示表单,然后使用jQuery在应该保存表单时提交表单。