Как передать массив JavaScript в представления Django

Предыстория: Я пытаюсь создать небольшое веб-приложение, в котором мне нужно показывать данные на основе флажков, установленных пользователем. Я очень новичок в кодинге и почему-то решил начать с Django. Я сделал следующее:

  1. Я использовал HTML форму для чекбокса, который ничего не делает при отправке
  2. .
  3. JavaScript для валидации флажка и сбора пользовательского ввода в массив.

Я хочу передать эту переменную массива в Django views.py, чтобы попытаться отфильтровать данные и затем отобразить их пользователю, но я застрял. Я пробовал использовать Jquery (see result_output function), но не могу заставить его работать.

Ниже приведены коды. Любая помощь будет высоко оценена.

JavaScript:

function nextPrev(n)
    {
      // This function will figure out which tab to display
      var x = document.getElementsByClassName("tab");
      //exit the function if any checkbox is not checked
      if(n==1 && !validateFrom(currentTab)) return false;
      //console.log(all_filter_value[0])
      //console.log(all_filter_value[1])
      // Hide the current tab:
      x[currentTab].style.display = "none";
      document.getElementsByClassName("step")[currentTab].className += " finish";
      // Increase or decrease the current tab by 1:
      currentTab = currentTab + n;
      // if you have reached the end of the form... :
      if (currentTab >= x.length) {
        //...the form gets submitted:
        document.getElementById("questbox").style.display="none";
        result_output();
        return false;
      }

 all_filter_value = [];
function validateFrom(p)
{
    var check = 0;
    var Q = document.getElementsByClassName("tab");
    console.log(Q.length)
    var C = Q[p].getElementsByTagName("input");
    console.log(C.length);

    filter_var = [];
    for(i=0; i < C.length; i++)
    {
        if(C[i].checked==true)
        {
            var picked_value= C[i].value
            check=check+1;
            filter_var.push(picked_value);
        }
    }
    console.log(check)
    //console.log(filter_var)
    console.log(all_filter_value)
    if(check==0)
        return false
    else
        document.getElementsByClassName("step")[p].className += " finish";
        all_filter_value.push(filter_var);
        return true
}

function result_output()
{
  document.getElementsByClassName("result_window")[0].style.display="block";

  $(document).ready(function () {

  var URL = "{% url 'homepage' %}";
  var data = {'all_filter_value': all_filter_value};
  $.post(URL, data, function(response){
  if(response === 'success'){ alert('Yay!'); }
  else{ alert('Error! :('); }
    });

  });

}

Views.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import moviedb
import pandas as pd

def homepage(request):

    movies = moviedb.objects.all().values()
    df = pd.DataFrame(movies)
    mydict = {
        "df": df
    }
    if request.method == 'POST':
        if 'all_filter_value' in request.POST:
            all_filter_value = request.POST['all_filter_value']
            return HttpResponse('success')

    return render(request=request,
                  template_name="movierec/home.html",
                  context=mydict)
Вернуться на верх