Отправка сообщений из 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)