Отправка 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})
Вернуться на верх