Как обращаться с 302 в django 2,2? - PullRequest
0 голосов
/ 27 января 2020

У меня есть 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")

сводка заказов. 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'),
    ]

enter image description here

1 Ответ

0 голосов
/ 27 января 2020

Я использовал redirect () вместо render ().

def CartView(request):
    user = request.user
    # course = get_object_or_404(Course, slug=slug)
    carts = Cart.objects.filter(user=user)
    orders = Order.objects.filter(user=user, ordered=False)

    if carts.exists():
        order = orders[0]
        return render(request, 'order-summary.html', {"carts": carts, 'order': order})

    else:
        messages.warning(request, "You do not have an active order")
        # return redirect("cart:order-summary")
        return render(request, 'order-summary.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...