【发布时间】:2020-01-27 13:58:34
【问题描述】:
我的订单摘要页面中有 3 件或更多商品。当我删除其中一项时,我的代码会将我重定向到同一订单摘要页面。但是当我试图从订单摘要页面中删除最后一个订单时,我的代码会将我重定向到主页。
我想在购物车为空时留在同一页面上并继续 购物按钮,但是当我从购物车中取出最后一件商品时 将我重定向回主页
views.py
def remove_from_cart(request, slug):
course = get_object_or_404(Course, slug=slug)
cart_qs = Cart.objects.filter(item=course, user=request.user)
if cart_qs.exists():
# cart = cart_qs[0]
# if cart.quantity > 1:
# cart.quantity -= 1
# cart.save()
# else:
cart_qs.delete()
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.orderitems.filter(item__slug=course.slug).exists():
order_item = Cart.objects.filter(
course=course,
user=request.user,
)[0]
order.orderitems.remove(order_item)
messages.info(request, "This item was removed from your cart.")
return redirect("cart:order-summary")
else:
messages.info(request, "This item was not in your cart")
return redirect("cart:order-summary")
else:
messages.info(request, "You do not have an active order")
return redirect("cart:order-summary")
order-summary.html
<tbody>
{% if carts %}
{% for cart in carts %}
<tr>
<td>
<p>{{ cart.item }}</p>
</td>
<td>
<p>Rs. {{ cart.price }}</p>
</td>
<td>
<p>Rs. {{cart.get_total }}</p>
<a href="{% url 'cart:remove-from-cart' cart.item.slug %}">Remove</a>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td>
<p>Your Cart is Empty </p>
</td>
</tr>
</tbody>
{% endif %}
urls.py
app_name= 'cart'
urlpatterns = [
# path('', Home.as_view(), name='home'),
path('<slug>', add_to_cart, name='cart'),
path('remove/<slug>', remove_from_cart, name='remove-from-cart'),
path('order-summary/', CartView, name='order-summary'),
]
【问题讨论】:
-
显示你的 urls.py
-
@Charnel 我添加了 urls.py
-
如果你用这个
redirect("order-summary")替换重定向,它会起作用吗? -
@Charnel 它向我显示 NoReverseMatch 错误。我这样做了
-
嗯,你能把
CartView的代码给我吗?
标签: django python-3.x redirect httprequest