Django Ajax 405 (метод не разрешен) CBV - PullRequest
0 голосов
/ 24 марта 2020

У меня проблемы с отправкой и удалением через Ajax звонок! Я определил методы в классе! ИДК, что происходит.

Любая помощь будет оценена ?

urls.py:

 path('<section>/add_wish/<slug>/', views.AddToWishlistView.as_view(), name='add_to_cart'),

мой взгляд:

class AddToWishlistView(LoginRequiredMixin, View):
    model = Wishlist
    http_method_names = ['POST']

    def POST(self, request, *args, **kwargs):
      wished_product = get_object_or_404(Product, slug=self.kwargs['slug'])
      new_item = self.model.objects.get(customer = self.request.user)
      new_item.product.add(wished_product)
      return HttpResponse(status=201)

и Ajax здесь!

    $('.buy').click(function(e){
        e.preventDefault();

        let _this = $(this);
        var slug = _this.children().data('id');
        var section_slug = _this.data('section');

        $.ajax({
            type : 'POST',
            url :  '../'+section_slug + '/add_wish/' + slug + '/',
            success: function(data){
                if(data.success = true){
                    _this.addClass('clicked');
                }

            },
            async : false,
            error : function(data){
                console.log("ERROR");
                console.log(data);
                alert('LOOSERR');
            }
        })
    });

1 Ответ

0 голосов
/ 24 марта 2020

Имя метода должно быть в нижнем регистре:

def post(self, request, *args, **kwargs):

Каждый запрос, поступающий в представление, проходит через метод dispatch, который отвечает за вызов правильного метода. Ниже объясняется, как это работает:

https://docs.djangoproject.com/en/3.0/ref/class-based-views/base/#django .views.generi c .base.View.dispatch

и вот исходный код:

https://github.com/django/django/blob/291539a85c8461456ab728fe6820a86de54294b6/django/views/generic/base.py#L93 -L101

...