def add_cart(request): try: with transaction.atomic(): book_id = request.POST.get('book_id') number = request.POST.get('num', '1') cart = request.session.get('cart') if str(number).isdigit() and int(number) in range(1, 201): if request.session.get('login_status'): username = request.session.get('username') if '@' in username: user_id = TUser.objects.filter(username=username)[0].id else: user_id = TUser.objects.filter(phone_number=username)[0].id user_book = TShoppingCart.objects.filter(book_id=int(book_id), user_id=user_id) if user_book: user_book[0].quantity += int(number) user_book[0].save() else: TShoppingCart.objects.create(quantity=int(number), book_id=int(book_id), user_id=user_id) else: if cart: cart.add_book(int(book_id), int(number)) request.session['cart'] = cart else: cart = Cart() cart.add_book(int(book_id), int(number)) request.session['cart'] = cart return JsonResponse({'msg': '添加成功,快去购物车看看吧^_^!', 'status': 1}) return JsonResponse({'msg': '添加失败,添加的数量要在1-200之间', 'status': 0}) except Exception as error: print(error) return HttpResponse('哎呀!服务器出错了~')
def put_off(request): # 先将订单中要放回购物车的书放到session中 id = request.GET.get('id') count = request.GET.get('count') local_cart = request.session.get('cart') if local_cart: pass else: local_cart = L_cart() # 创建新的本地购物车 with transaction.atomic(): local_cart.add_book(id=id, count=count) request.session['cart'] = local_cart return HttpResponse('已将所选书籍放回到购物车中')
def add_book(request): # 判断登陆状态 cookie_uid = request.COOKIES.get('uid') user = '' if cookie_uid: user = User.objects.get(id=cookie_uid) else: session_user = request.session.get('user') if session_user: user = session_user id = int(request.GET.get('id')) # 获取书的id count = int(request.GET.get('count')) # 获取添加书的数量 try: if user: book = U_cart.objects.filter(cart_uid=user.id, cart_bid=id) # 获取购物车中所存放的书 if book: # 如果该书存在 with transaction.atomic(): book[0].number += count # 书的数量变化 book[0].save() else: # 不存在 book = Book.objects.get(id=id) # 获取到书的对象 with transaction.atomic(): U_cart.objects.create(number=count, cart_uid=user, cart_bid=book) # 向购物车中添加书 else: local_cart = request.session.get('cart') if local_cart: pass else: local_cart = Cart() # 创建新的本地购物车 with transaction.atomic(): local_cart.add_book(id=id, count=count) request.session['cart'] = local_cart return HttpResponse('已添加' + str(count) + '本书籍') except Exception as e: print(e) return HttpResponse('出错了')