Как устранить ошибку 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'