Отправка сообщений из Django в Ajax во время обработки запроса

Я делаю AJAX вызов Django POST представления. Он считывает X-файлы локально, а затем отправляет обратно на внешний интерфейс (благодаря ajax), чтобы пользователь мог их загрузить.

В этой части все работает хорошо, но я хотел бы иметь что-то вроде "intermediate response", который бы сообщил Ajax, что сервер прочитал один файл.

Таким образом, я мог бы создать полосу загрузки на фронт-энде, пока сервер обрабатывает запрос.

Есть ли способ сделать это, используя только Ajax и Django?

Вот мой код, довольно упрощенный, чтобы вы могли лучше понять, что я хочу, чтобы он делал:

Django:

def downloadFiles_API(request):
    if request.is_ajax and request.method == "POST":
        requested_files = json.loads(request.body)['files']
        for file in requested_files:
            # Handle file reading (this part works)
            # Here i'd like to tell the front end "File X has been loaded..."
        # Zip-ing all files, and send it as response
        return FileResponse(myZipFile)

AJAX:

$.ajax({
        url: "/api/downloadFiles/",
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({
            "files" : filesThatTheUserWants,
        }),
        xhrFields:{
            responseType: 'blob'
        },
        success: function (response){
            // Download the file in response (this works)
        },
        // And what i'd like to add (it's NOT in my code):
        onProgress: function (intermediateResponse){
            console.log(intermediateReponse);
            // Would print "File X has been loaded..."
            // Each time a file is loaded on server side
        }

Примечание: я нашел несколько похожих вопросов, но они либо слишком общие, либо не объясняют ajax часть (как эти: Отправлять промежуточные сообщения во время Ajax вызова, или Как передавать HttpResponse с помощью Django)

Вернуться на верх