Не удается передать данные из представления в js-файл, имеющий диаграммные js-коды, появляется неожиданная синтаксическая ошибка

Я пытаюсь сделать аналитику для моего webapp, где она должна графически отображать данные из базы данных. Для этого я использую chart js. Я изучаю как это сделать на youtube. Странно, но они не получают никаких ошибок, а я получаю вот это

Uncaught SyntaxError: Unexpected token '{'

вот коды, которые я написал

views.py

 monthly_visitor = VisitorCount.objects.all().values(
    'date_of_record__month'
    ).annotate(
        total_in_month=Count('ip') # take visitor_id or whatever you want to count
        ).order_by()

    yearly_visitor = VisitorCount.objects.all().values('date_of_record__year').annotate(
        total_in_year= Count('ip')
    ).order_by()

    print("\nthe values of monthly visitors are", monthly_visitor, "\n")

    visitorMonthNumber = []
    visitorNumberMonthly = []

    
    for i in range(len(monthly_visitor)):

        visitorMonthNumber.append(monthly_visitor[i]['date_of_record__month'])
        visitorNumberMonthly.append(monthly_visitor[i]['total_in_month'])   
    
    print("\nthis is the list of month number =", visitorMonthNumber, "\n", "\nthis is the number of visitors", visitorNumberMonthly, "\n")
       

    
     context = {
        'visitorMonthNumber':  visitorMonthNumber,
        'visitorNumberMonthly':  visitorNumberMonthly
    }

    return render(request, "chart.html", context)
   

В приведенном выше коде я запрашиваю модель с именем visitor count, чтобы получить количество посетителей в каждом месяце.

js файл

var visitorMonthNumber = {{visitorMonthNumber}};
var visitorNumberMonthly = {{visitorNumberMonthly}};
const visitorM = document.getElementById('visitorMonthly').getContext('2d');
const visitorMonthly = new Chart(visitorM, {
    type: 'bar',
    data: {
        labels: visitorMonthNumber,
        datasets: [{
            label: 'Monthly Visitors',
            data: visitorNumberMonthly,
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)',
                'rgba(255, 159, 64, 0.2)'
            ],
            borderColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)',
                'rgba(255, 159, 64, 1)'
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            y: {
                beginAtZero: true
            }
        }
    }
});

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

этот код печатает

print("\nthis is the list of month number =", visitorMonthNumber, "\n", "\nthis is the number of visitors", visitorNumberMonthly, "\n")

это результат и это то, что я хочу получить на графике

this is the list of month number = [12, 10, 11, 9, 1]

this is the number of visitors [3, 1, 1, 1, 1]

Есть два способа сделать это.

Либо передать значения внутри context в html, а затем использовать текст скрипта внутри html-файла для вывода данных.

Другой метод, и, возможно, самый точный - использовать ajax.

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