我有一个视图,根据我的打印,它进入了Try
和Except
部分。
据我了解,它只应输入Try
部分或Except
部分,而不能同时输入。
Cart object exist
Lenght in Cart_Items
1
Enters Except PART
55
为什么会这样?
def cart_detail(request, total = 0, counter = 0, cart_items = None):
try:
cart = Cart.objects.get(id = request.COOKIES.get("cart_id"))
if not cart:
print("No Cart object")
else:
print("Cart object exist")
cart_items = CartItem.objects.filter(cart = cart)
print("Lenght in Cart_Items")
print(len(cart_items))
for cart_item in cart_items:
total += (cart_item.product.price)
sample_items = SampleItem.objects.filter(cart=cart)
for sample_item in sample_items:
total += (sample_item.sample.price)
culqi_my_public_key = settings.CULQI_PUBLISHABLE_KEY #Es necesario mandar la llave pública para generar un token
culqi_total = int(total * 100) #El total para cualqui debe multiplicarse por 100
categories = Category.objects.exclude(name='Muestras')
return render(request, 'cart.html', dict(cart_items = cart_items, sample_items = sample_items, total = total, counter = counter,
culqi_total = culqi_total, culqi_my_public_key = culqi_my_public_key,
categories = categories))
except:
print('Enters Except PART')
print(request.COOKIES.get("cart_id"))
categories = Category.objects.exclude(name='Muestras')
return render(request, 'cart.html', {'categories':categories})
答案 0 :(得分:1)
您的理解是错误的。代码总是进入try:
部分,直到引发异常。如果发生这种情况,则except:
部分将运行。
因此,您将获得try:
的第一部分,然后是except:
。未到达try:
末尾的代码。
您的try:
部分很长,并且您有一个所谓的“ bare-except”:您没有说要捕获哪些异常。两者都不是一个好主意,最好有简短的try-parts(以便您确切地知道哪一行可能引发异常),然后准确地捕获您期望的异常,而别无其他。否则,except:
块会将它们静音,从而使您无法注意到意外的异常。
答案 1 :(得分:0)
您的代码将在try块中的print(len(cart_items))
语句之后中断,然后进入except块。