[英]'str' object has no attribute 'get', AttributeError at /add-to-cart/shirt
I am getting above stated error after lining some modification in models and views and here are the associated code:在对模型和视图进行一些修改后,我遇到了上述错误,这是相关的代码:
def add_to_cart(request, slug):
item = get_object_or_404(Item, slug=slug)
order_item, created = OrderedItems.objects.get_or_create(
item=item,
user=request.user,
ordered=False
)
order_qs = Order.objects.filter(user=request.user, ordered=False)
if order_qs.exists():
order = order_qs[0]
# check if the order item is in the order
if order.items.filter(item__slug=item.slug).exists():
order_item.quantity += 1
order_item.save()
messages.info(request, "This item quantity was updated.")
return reverse('core:product_detail', kwargs={'slug': slug})
else:
order.items.add(order_item)
messages.info(request, "This item was added to your cart.")
return reverse('core:product_detail', kwargs={'slug': slug})
else:
ordered_date = timezone.now()
order = Order.objects.create(
user=request.user, ordered_date=ordered_date)
order.items.add(order_item)
messages.info(request, "This item was added to your cart.")
return reverse('core:product_detail', kwargs={'slug': slug})
the trace back seems to be really vague:追溯似乎真的很模糊:
Traceback:
File "C:\Users\pytuts\.virtualenvs\ecommerce_only-Npoh1MB8\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\pytuts\.virtualenvs\ecommerce_only-Npoh1MB8\lib\site-packages\django\utils\deprecation.py" in __call__
96. response = self.process_response(request, response)
File "C:\Users\pytuts\.virtualenvs\ecommerce_only-Npoh1MB8\lib\site-packages\django\middleware\clickjacking.py" in process_response
26. if response.get('X-Frame-Options') is not None:
Exception Type: AttributeError at /add-to-cart/shirt/
Exception Value: 'str' object has no attribute 'get'
and urls.py looks like:和 urls.py 看起来像:
path('add-to-cart/<slug:slug>/', add_to_cart, name='add_to_cart'),
Well, reverse(...)
returns a string, which is the url for a certain name.好吧, reverse(...)
返回一个字符串,它是某个名称的 url。 But you need return a Http response
from the view, like for example HttpResponseRedirect
:但是您需要从视图返回一个Http response
,例如HttpResponseRedirect
:
from django.http import HttpResponseRedirect
...
return HttpResponseRedirect(reverse('core:product_detail', kwargs={'slug': slug}))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.