Невозможно ответить на вызов AJAX на контекстном процессоре

Я разрабатываю сайт на DJANGO и столкнулся с проблемой:

На моем сайте есть кнопка, которая при срабатывании отправляет AJAX POST запрос. Поскольку эта кнопка находится в нескольких местах моего сайта, я решил получать AJAX-запрос в файле контекстного процессора моего бэкенда.

Вот как выглядит запрос во фронтенде:

$.ajax({
    method: 'POST',
    headers: {'X-CSRFToken': csrftoken},
    data: {
        "requested_item": requested_item
    },
    dataType: "json",
    success: function() {
      // Handle success
    }
  });

А вот как выглядит обработка запроса в бэкенде:

requested_item = request.POST.get('requested_item')
    if requested_item != None:
      # Handle valid request
      return JsonResponse({'success': True})

Дело в том, что return JsonResponse({'success': True}) не работает, он выбрасывает эту ошибку:

File "*path*\virtual-env\lib\site-packages\django\template\context.py", line 244, in bind_template
    updates.update(processor(self.request))
ValueError: dictionary update sequence element #0 has length 17; 2 is required

Данные поступают без проблем с фронтенда на бэкенд, но я не могу ответить.

Я обрабатываю несколько AJAX-запросов таким же образом в своем бэкенде и отвечаю без проблем, но это единственный запрос, который я обрабатываю в контекстном процессоре, поэтому я уверен, что я что-то упускаю.

Спасибо!

В конце концов, с помощью, я разобрался в этом.

Контекстный процессор должен использоваться только для контекста шаблона или рендеринга шаблона в целом, поэтому ответ должен быть словарем, а не типом json (об этом и говорит ошибка).

Я создал независимое представление для этого AJAX запроса и указал во фронтенд стороне AJAX URL этого представления и таким образом все заработало.

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