Как устранить ошибку Method Not Allowed (POST) в Django?

Я создаю POS-приложение на Django. В настоящее время я использую шаблон ниже для добавления товаров в текущий заказ, изменения количества, удаления некоторых товаров, которые не нужны в текущем заказе, и, наконец, после добавления всех необходимых товаров, для нажатия на кнопку Checkout для проверки.

Я решил изменить шаблон на формат шаблона Django, как показано ниже:

К сожалению, этот шаблон не работает. Он выдает следующее сообщение об ошибке:Method Not Allowed (POST): /order/57/ Метод не разрешен: /order/57/

Для более подробной информации, вот мои взгляды на детали заказа:

class AddToOrderView(View):
    def post(self, request, order_id):
        order = get_object_or_404(Order, id=order_id)
        barcode = request.POST.get('barcode')
        quantity = int(request.POST.get('quantity', 1))

        try:
            product = Product.objects.get(barcode=barcode)
        except Product.DoesNotExist:
            return JsonResponse({'success': False, 'error': 'Product does not exist in the database.'})

        # Check if the product already exists in the order
        order_item, created = OrderItem.objects.get_or_create(order=order, product=product)
        if created:
            order_item.quantity = quantity
        else:
            order_item.quantity += quantity
        order_item.save()

        # Recalculate totals
        total_without_tax = sum(item.price for item in order.items.all())
        total_tax = sum(item.tax_amount for item in order.items.all())
        total_with_tax = total_without_tax + total_tax
        total_price_with_tax = order_item.price + order_item.tax_amount

        return JsonResponse({
            'success': True,
            'order_item_id': order_item.id,
            'product_name': product.name,
            'quantity': order_item.quantity,
            'price': product.price,
            'tax_amount': order_item.tax_amount,
            'total_without_tax': total_without_tax,
            'total_tax': total_tax,
            'total_with_tax': total_with_tax,
            'total_price_with_tax': total_price_with_tax,
            'is_existing_item': not created
        })

На самом деле, существующие решения для аналогичного случая не решают мою проблему.

Спасибо

Судя по тому, что вы рассказали, вы отправляете данные в представление заказа, которое не должно получать данные post. В форме, где вы установили method='post', установите также action='url-to-receive-post-data-to-process'

Вернуться на верх