第 254 行,在 add_coupon order.coupon = get_coupon(request, code) AttributeError: 'dict' object has no attribute 'coupon'

问题描述

我正在创建一个 django3 电子商务网站,当访客用户尝试输入优惠券时遇到以下错误:

Traceback (most recent call last):
  File "/Users/miryamelliye/development/comdjanco/osivenv/lib/python3.7/site-packages/django/core/handlers/exception.py",line 47,in inner
    response = get_response(request)
  File "/Users/miryamelliye/development/comdjanco/osivenv/lib/python3.7/site-packages/django/core/handlers/base.py",line 181,in _get_response
    response = wrapped_callback(request,*callback_args,**callback_kwargs)
  File "/Users/miryamelliye/development/comdjanco/ecommerce/store/views.py",line 254,in add_coupon
    order.coupon = get_coupon(request,code)
AttributeError: 'dict' object has no attribute 'coupon'

views.py

def get_coupon(request,code):
try:
    coupon = Coupon.objects.get(code = code)
    return coupon
except ObjectDoesNotExist:
    messages.info(request,'This coupon does not exist')
    return redirect('checkout')


def add_coupon(request):
    data = cartData(request)
    if request.method == "POST":
        form = CouponForm(request.POST or None)
        if form.is_valid():
            try:
                code = form.cleaned_data.get('code')
                order = data['order']
                order.coupon = get_coupon(request,code)
                order.save()
                messages.success(request,'Successfully added coupon!')
                return redirect('checkout')
            except ObjectDoesNotExist:
                messages.info(request,'You do not have an active order')
                return redirect('checkout')
    return redirect('checkout')

我的 utils.py

    def cookieCart(request):

    #Create empty cart for now for non-logged in user
    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:

        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 = {
                'id':product.id,'product':{'id':product.id,'name':product.name,'price':product.price,'imageURL':product.imageURL},'quantity':cart[i]['quantity'],'digital':product.digital,'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:
        user = request.user
        order,created = Order.objects.get_or_create(user=user,complete=False)
        items = order.orderitem_set.all()
        cartItems = order.get_cart_items
    else: 
        cookieData = cookieCart(request)
        cartItems = cookieData['cartItems']
        order = cookieData['order']
        items = cookieData['items']
    return {'items':items,'cartItems':cartItems}


def guestOrder(request,data):
    name = data['form']['name']
    email = data['form']['email']

    cookieData = cookieCart(request)
    items = cookieData['items']

    user,created = User.objects.get_or_create(
            username = name,email=email,)
    #user.name = name
    user.save()

    order = Order.objects.create(
        user=user,complete=False,coupon=None,#todelete
        )

    for item in items:
        product = Product.objects.get(id=item['id'])
        orderItem = OrderItem.objects.create(
            product=product,order=order,quantity=item['quantity'],)
    return user,order

如果有人能帮忙,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...