Python Django:类型错误';非类型';对象不可下标
我正在创建一个产品签出页面,并试图从下面的util.py文件访问我的购物车项目。我看到很多网站说“非类型”对象是不可订阅的错误,这意味着我试图索引一个不具备该功能的对象。但是我想不出是怎么回事。该错误发生在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
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非常感谢,这只是又一个愚蠢的错误