Джанго - нет изображения там, где оно должно быть.Как сохранить изображение, отправленное через ajax? - PullRequest
0 голосов
/ 12 августа 2011

Я не получаю путь к изображению, сохраненный в базе данных, и изображение не сохраняется в файловой системе. Исходный пункт сохранен, потому что изображение не требуется. 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 Ответ

1 голос
/ 12 августа 2011

Я думаю, что одна из проблем может заключаться в том, что обычный запрос jQuery AJAX не отправляет данные формы с типом содержимого multipart/form-data.Посмотрите этот вопрос для получения дополнительной информации о том, как отправлять данные формы через AJAX с помощью jQuery.

Это решение не похоже на 100% кросс-браузерную совместимость.Обходным путем может быть отображение формы в iframe, а затем использование jQuery для отправки формы, когда она должна быть сохранена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...