问题描述
我正在创建一个 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 (将#修改为@)