python - 我正在尝试将添加的商品显示到我的购物车页面。但是当我呈现我的购物车页面时,我在 /cart/ 处出现属性错误
问题描述
这是我的 cart.js 文件的一部分
function updateUserOrder(productId, action){
console.log('User is logged in, sending data..')
var url = '/update_item/'
fetch(url, {
method: 'Post',
headers:{
'Content-Type':'application/json',
'X-CSRFToken':csrftoken,
},
body:JSON.stringify({'productId': productId, 'action':action})
})
.then((response)=>{
return response.json()
})
.then((data)=>{
console.log('data:', data)
})
}
这是我的“views.py”文件中的一个函数。
def cart(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()
else:
items = []
order = {'get_cart_total':0, 'get_cart_items':0}
context={'items': items, 'order':order}
return render(request, 'store/cart.html', context)
模型.py
class Order(models.Model):
costumer = models.ForeignKey(Costumer, on_delete=models.SET_NULL, blank=True, null=True)
date_ordered = models.DateTimeField(auto_now_add=True)
complete = models.BooleanField(default=False, null=True, blank=False)
transaction_id = models.CharField(max_length=200, null=True)
def __str__(self):
return str(self.id)
@ property
def get_cart_total(self):
orderitems = self.orderitem_set.all()
total = sum([item.get_total for item in orderitems])
return total
@ property
def get_cart_items(self):
orderitems = self.orderitem_set.all()
total = sum([item.quantity for item in orderitems])
return total
我收到此错误。如果有人可以在这里帮助我,我将不胜感激。
File "C:\Users\PC\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\functional.py", line 225, in inner
return func(self._wrapped, *args)
AttributeError: 'User' object has no attribute 'customer'
[07/Sep/2020 09:15:43] "GET /cart/ HTTP/1.1" 500 70674
我认为我什至没有“用户”对象。我不知道这个错误是从哪里来的。
解决方案
请使用customer =request.user
代替 customer = request.user.customer
def cart(request):
if request.user.is_authenticated:
costumer = request.user
order, created = Order.objects.get_or_create(costumer=costumer, complete=False)
items = order.orderitem_set.all()
else:
items = []
order = {'get_cart_total':0, 'get_cart_items':0}
context={'items': items, 'order':order}
return render(request, 'store/cart.html', context)
推荐阅读
- javascript - 拖动一张图片可以拖动另一张图片
- kubernetes - 使用带有 GCS 存储桶的入口作为后端
- akka - 提高 lagom 服务的可扩展性
- javascript - 未捕获的 ReferenceError:未在 geotiff.js:3 中定义导出
- r - R - dim(X) 在 R 中必须有一个正长度?
- php - AWS SES 自定义验证电子邮件重定向 URL 没有参数
- php - 从具有正确扩展名的文本响应生成图像
- c# - NLog - System.MethodAccessException 仅在 VMWare Horizon View 客户端中
- apache-spark - 关于 Spark 独立集群缓存内存问题的 Jupyter 笔记本
- scala - Spark UDAF 动态输入模式处理