Метод не разрешен (POST): /

Я пытаюсь сделать простой одностраничный магазин. Я сделал ListView для товаров и он рендерится без проблем. Корзина будет в модальном окне. Я сделал кнопку купить, но когда я нажимаю на нее, она говорит:

Method Not Allowed (POST): /
Method Not Allowed: /
[22/Dec/2021 11:40:04] "POST / HTTP/1.1" 405 0

Вот мои взгляды:

from django.shortcuts import render
from django.views.generic import ListView
from .models import Item
from .forms import AddCartForm

class ItemsListView(ListView):
    model = Item
    template_name = 'main_page.html'

def aBuy(request):
    form = AddCartForm
    if request.method == 'POST':
        print('BUY BUY')
    return render(request, 'main_page.html', {'form':form})

Это форма:

class AddCartForm(ModelForm):
    class Meta:
        model = Item
        fields = ['price', 'quantity']

Форма в html:

<div class="col" style="text-align:left">
                          <form name="buy" method="POST">
                              {% csrf_token %}
                              {{ form }}
                            <input type="submit" class="btn btn-info butt" value="Buy">
                          </form>
                      </div>

Я не могу продолжать делать логику для добавления его в будущую корзину из-за этого. print('BUY BUY') - это только для тестирования. В url файле только главная страница с ItemListView.as_view. Я пробовал вставлять функцию aBuy в нее и из нее, та же проблема остается.

Вы забыли атрибут action в вашей форме:

<form action="/path-to-post-url/" method="post"> 
  {% csrf_token %} 
  {{ form }} 
  <input type="submit" value="Submit">
</form>

Подробнее о шаблонах и формах вы можете прочитать здесь Django Forms.

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