【问题标题】:Django Ajax 405 (Method Not Allowed) CBVDjango Ajax 405(不允许的方法)CBV
【发布时间】:2020-07-04 14:48:46
【问题描述】:

我在通过 Ajax 调用 POST 和 DELETE 时遇到问题! 我已经在课堂上定义了方法!知道发生了什么。

任何帮助将不胜感激????

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');
            }
        })
    });

【问题讨论】:

  • 方法名必须小写。即,def post(self, request, *args, **kwargs):
  • @ArakkalAbu 仍然无法正常工作 405:/
  • HTTP 帖子现在应该可以工作了如果您的 URL 正确
  • 你确定jQuery中的url应该以“../”开头吗?
  • 是的..网址是正确的

标签: javascript django ajax http-status-code-405


【解决方案1】:

方法名要小写:

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

到达视图的每个请求都通过dispatch 方法,该方法负责调用正确的方法。下面解释它是如何工作的:

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

这里是源代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2014-06-22
    • 2019-07-05
    相关资源
    最近更新 更多