Django - 没有它应该的图像。如何保存通过ajax发送的图像?

时间:2011-08-11 21:52:57

标签: ajax django

我没有在数据库中保存图像路径,也没有图像保存在文件系统中。保存项目金额,因为不需要图像。 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发送的图像?

1 个答案:

答案 0 :(得分:1)

我认为其中一个问题可能是普通的jQuery AJAX请求不会发送内容类型为multipart/form-data的表单数据。有关如何使用jQuery通过AJAX发送表单数据的更多信息,请查看this question

此解决方案似乎不是100%跨浏览器兼容。解决方法可能是在iframe中显示表单,然后使用jQuery在应该保存表单时提交表单。