Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:类型错误';非类型';对象不可下标_Python_Django_Typeerror_Nonetype - Fatal编程技术网

Python Django:类型错误';非类型';对象不可下标

Python Django:类型错误';非类型';对象不可下标,python,django,typeerror,nonetype,Python,Django,Typeerror,Nonetype,我正在创建一个产品签出页面,并试图从下面的util.py文件访问我的购物车项目。我看到很多网站说“非类型”对象是不可订阅的错误,这意味着我试图索引一个不具备该功能的对象。但是我想不出是怎么回事。该错误发生在cartData函数中 views.py from .utils import cartData def checkout(request): #call method from utils.py data =cartData(request) cartItems

我正在创建一个产品签出页面,并试图从下面的util.py文件访问我的购物车项目。我看到很多网站说“非类型”对象是不可订阅的错误,这意味着我试图索引一个不具备该功能的对象。但是我想不出是怎么回事。该错误发生在
cartData
函数中

views.py

from .utils import cartData

def checkout(request):

    #call method from utils.py
    data =cartData(request)
    cartItems = data['cartItems'] 
    order = data['order']
    items = data['items']

    context = {
        'items': items,
        'order': order,
        'cartItems': cartItems
    }
    return render(request, 'store/checkout.html', context)

utils.py

def cookieCart(request):
    try:
        cart = json.loads(request.COOKIES['cart'])

    except:
        cart = {}

    print('Cart', cart)
    items = []
    order = {'get_cart_total': 0, 'get_cart_items': 0, 'shipping': False}
    cartItems = order['get_cart_items']

    for i in cart:
        # check if product exists
        try:
            cartItems += cart[i]['quantity']

            product = Product.objects.get(id=i)
            total = (product.price * cart[i]['quantity'])

            order['get_cart_total'] += total
            order['get_cart_items'] += cart[i]['quantity']

            item = {
                'product': {
                    'id': product.id,
                    'name': product.name,
                    'price': product.price,
                    'imageURL': product.imageURL,
                },
                'quantity': cart[i]['quantity'],
                'get_total': total
            }
            items.append(item)
           

            if product.digital == False:
                order['shipping'] = True
        except:
            pass
        return{'cartItems': cartItems, 'order': order, 'items': items}


def cartData(request):
    if request.user.is_authenticated:
        customer = request.user.customer
        order, created = Order.objects.get_or_create(
            customer=customer, complete=False)
        items = order.orderitem_set.all()
        cartItems = order.get_cart_items
    else:
        # call method from utils.py
        cookieData = cookieCart(request)
        cartItems = cookieData['cartItems'] //the'NoneType' object is not subscriptable error occurs here
        order = cookieData['order']
        items = cookieData['items']
    return {'cartItems': cartItems, 'order': order, 'items': items}

是否还要添加获取错误的行号?我猜在
try/except
中发生了一些异常,但您正在覆盖它,并通过了
pass
,因此默认情况下,您的函数将返回
None
。所以我的建议是,删除
try/except
,这样你就会看到它里面的失败之处。你想从这个语句中得到什么?customer=request.user.customer我发现cookieCart函数中有一个问题,因为如果因为cart变量为空而没有调用for循环,那么您将返回None,这就是您收到此消息的原因error@jaswanth非常感谢你,这只是另一个愚蠢的错误。您还想在出现错误的地方添加行号吗?我猜在
try/except
中发生了一些异常,但是您正在覆盖它,并且通过了
pass
,因此默认情况下,您的函数将返回
None
。所以我的建议是,删除
try/except
,这样你就会看到它里面的失败之处。你想从这个语句中得到什么?customer=request.user.customer我发现cookieCart函数中有一个问题,因为如果因为cart变量为空而没有调用for循环,那么您将返回None,这就是您收到此消息的原因error@jaswanth非常感谢,这只是又一个愚蠢的错误