Отправка AJAX-запроса Django на предыдущие страницы
Итак, у меня есть проект с Django для обнаружения некоторых глубоко поддельных видео. Но у меня есть некоторые проблемы. Мне нужно отправить некоторый фоновый процесс (внутри функции predict_page) на предыдущие страницы (внутри функции index_page).
Индексная страница выглядит следующим образом https://i.stack.imgur.com/nYWWV.png
После того, как пользователь отправит видео с помощью кнопки INVESTIGATE, начнется процесс предсказания, и я хочу показать его ниже кнопки на тексте "TEMPAT PROSESSING". Я запутался, потому что процесс предсказания происходит не на функции index, а на функции predict.
Процесс предсказания, который я имею в виду, выглядит примерно так: https://i.stack.imgur.com/EHGJJ.png
Кто-то сказал мне, что нужно использовать AJAX. Но я никогда не использовал его раньше. Может ли кто-нибудь подсказать мне, как это сделать? Спасибо. Ниже приведен код для процесса обнаружения, который мне нужно отправить
# def predict_page(request)
Start: Video Splitting
print("\n<=== | Started Videos Splitting | ===>")
split_start = time.time()
cap = cv2.VideoCapture(video_file)
frames = []
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frames.append(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
for i in range(1, sequence_length+1):
frame = frames[i]
split_time = ((time.time() - split_start))
print("---- %.2f seconds ----" % split_time)
print("<=== | Videos Splitting Done | ===>")
# Start: Face Cropping
print("\n<=== | Started Face Cropping | ===>")
crop_start = time.time()
faces_cropped_images = []
padding = 50
faces_found = 0
for i in range(1, sequence_length+1):
frame = frames[i]
face_locations = face_recognition.face_locations(frame)
if len(face_locations) == 0:
continue
top, right, bottom, left = face_locations[0]
frame_face = frame[top-padding:bottom+padding, left-padding:right+padding]
image = cv2.cvtColor(frame_face, cv2.COLOR_BGR2RGB)
img = pImage.fromarray(image, 'RGB')
image_name = video_file_name_only+"_cropped_faces_"+str(i)+'.png'
image_path = os.path.join(settings.PROJECT_DIR, 'cropped_faces', video_file_name_only+"_cropped_faces_"+str(i)+'.png')
img.save(image_path)
faces_found = faces_found + 1
faces_cropped_images.append(image_name)
crop_time = ((time.time() - crop_start))
print("---- %.2f seconds ----" % crop_time)
print("<=== | Face Cropping Done | ===>")
# No face is detected
if faces_found == 0:
return render(request, predict_template_name, {"no_faces": True})
#Start: Predicting
for i in range(0, len(path_to_videos)):
output = ""
predict_start = time.time()
print("\n<=== | Started Prediction | ===>")
prediction = predict(model, video_dataset[i], './', video_file_name_only)
confidence = round(prediction[1], 1)
if prediction[0] == 1:
output = "REAL"
else:
output = "FAKE"
predict_time = ((time.time() - predict_start))
final_time =((time.time() - start_time))
print("\nPrediction:",output)
print("Accuracy:" , confidence)
print("---- %.2f seconds ----" % predict_time)
print("<=== | Prediction Done | ===>")
print("------------------------------")
print("Duration: %2.f seconds" % final_time)
return render(request, predict_template_name, {"faces_cropped_images": faces_cropped_images,"original_video": video_file_name, "output": output, "confidence": confidence})