Отправлять json из шаблона в представление django, а затем перенаправлять в это представление

У меня есть шаблон cat1.html с листингом товаров . Когда покупатель выбирает товар, создается объект со свойствами выбранного товара. Если клиент нажимает кнопку 'добавить в корзину', axios отправляет запрос + params строгифицированный объект продукта в /cart

ulElement.addEventListener('click', function(event) {
  let targetClasses = Array.from(event.target.classList);
   
  if(targetClasses.includes('dropdown-item')) {
    /* code to build the item */
  }
  if(targetClasses.includes('btn-cart')) {
      axios.get('/cart', { params: { item: JSON.stringify(item) } } );
  }
});

пока все работает нормально, я могу распечатать объект/json с сервера, так что я знаю, что он прошел через него.

def cart(request):
    item_dict = json.loads(request.GET.get('item'))
    user_cart.append(item_dict)
    print(user_cart); # this seems to work fine
    
    /* return redirect('cart') this results in error TypeError(f'the JSON object must be str, bytes or bytearray, ' */

Проблема возникает, когда я пытаюсь добавить перенаправление в представление /cart. Я получаю ошибку

объект JSON должен быть str, bytes или bytearray, а не NoneType

.

Я пытался обойти это, используя window.location.href, а также обернув кнопку в , но я получаю ту же ошибку, поэтому у меня есть ощущение, что я использую неправильный подход.

Вы не можете отправлять редирект в качестве ответа ajax. Вы можете отправить обратное сообщение или статус, и вы должны работать с этим на переднем плане в функции обратного вызова успеха.

Это происходит потому, что вы перенаправляете на представление 'cart' без JSON в параметрах. Поэтому происходит успешное перенаправление, но затем в перенаправленном экземпляре параметр 'item' равен None, поэтому json.loads() выбрасывает ошибку.

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