отправлять изображения с помощью ajax и django - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь отправить изображения с <input type="file" id="file" name="file" accept="image/*" multiple> без отправки всей формы. Я нашел много постов, которые объясняют это, поэтому я делаю это

urls.py

url(r'^images/', 'app.views.images', name='images'),

view.py

def images(request):
    if request.method == 'POST':
        print('hello')

1010 * JQuery *

$("#file").change(function (){
    try{
        var formdata = new FormData();
        var files = $('#file')[0].files;
        formdata.append('file',files);
        jQuery.ajax({
                    url: "images/",
                    type: "POST",
                    data: formdata,
                    processData: false,
                    contentType: false,
                    success: function (result) {
                         // if all is well
                         // play the audio file
                    }
                });
        }
    catch(err){
        alert(err.message);
        }
});

Но это дает мне "POST /images/ HTTP/1.1" 403 Ошибка

Я сделал другой тест, и я думаю, что ошибка data: formdata часть

1 Ответ

1 голос
/ 15 апреля 2019

Вам нужно либо отправить csrf_token в запросе ajax.

formdata["csrfmiddlewaretoken"] = '{{ csrf_token }}';  //add csrf token to the reauest data
jQuery.ajax({
    url: "images/",
    type: "POST",
    data: formdata,
    processData: false,
    contentType: false,
    success: function (result) {
        // if all is well
        // play the audio file
    }
});

Или использовать @ csrf_exempt на вашем представлении.

#views.py

@csrf_exempt
def images(request):
    if request.method == 'POST':
        print('hello')

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