Django: не удалось преобразовать строку в float: ''

Я пытаюсь написать функцию для отображения всех товаров в корзине, но она продолжает показывать эту ошибку could not convert string to float: " и я не могу определить, откуда берется проблема? Я пробовал изменить метод float(...) на int(...). какова возможная ошибка?

def cart_view(request):
    cart_total_amount = 0
    if 'cart_data_obj' in request.session:
        for p_id, item in request.session['cart_data_obj'].items():
            print("Item PRice is ##################", item['price'])
            cart_total_amount += int(item['qty']) * float(item['price'])

        return render(request, "core/cart.html", {'cart_data':request.session['cart_data_obj'], 'totalcartitems': len(request.session['cart_data_obj']), 'cart_total_amount':cart_total_amount})
    else:
        return render(request, 'core/cart.html', {'cart_data':'','totalcartitems':0,'cart_total_amount':cart_total_amount})

traceback

Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Item PRice is ################## 
Internal Server Error: /cart/
Traceback (most recent call last):
  File "C:\Users\Destiny\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Destiny\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Destiny\Desktop\E-commerce\ecomprj\core\views.py", line 230, in cart_view
    cart_total_amount += int(item['qty']) * float(item['price'])
ValueError: could not convert string to float: ''
[28/Oct/2022 22:17:42] "GET /cart/ HTTP/1.1" 500 68398

Похоже, что вы получаете пустую строку '' при попытке преобразовать item['price'] в float.

>>> float('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: ''

Убедитесь, что item['price'] имеет действительное значение, прежде чем преобразовывать его в float. Судя по предоставленной вами трассировке ошибки, похоже, что request.session['cart_data_obj'] не имеет правильной информации. В какой-то момент, когда вы устанавливаете session['cart_data_obj'], значение для ключа "price" устанавливается в пустую строку ''.

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