405(方法不允许)使用django进行ajax请求

tun*_*nak 8 django ajax jquery http

我有以下基于类的视图

class SupportView(BaseDetailView):

    def render_to_response(self):
       if self.request.method == "POST":
            message = "YES"
       else:
            message = "NO"
       return HttpResponse(message)
Run Code Online (Sandbox Code Playgroud)

并遵循Jquery代码:

    <script>
var username = $('.username').attr('data-username');
$('.destek').click(function(){
    $.ajax({
        url:"/profiles/support/",
        type:"POST",
        data:{"username":username, 'csrfmiddlewaretoken': '{{csrf_token}}'},
        dataType:"json"
    })
})
</script>
Run Code Online (Sandbox Code Playgroud)

并关注网址

   url(r'^support/$', SupportView.as_view())
Run Code Online (Sandbox Code Playgroud)

但是,当我点击按钮时,我看到了 127.0.0.1:8000/profiles/support/ 405 (METHOD NOT ALLOWED) error. Any ideas ?

Ben*_*ueg 18

您必须post在视图中实现该方法:

class SupportView(BaseDetailView):
    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        context = self.get_context_data(object=self.object)
        return self.render_to_response(context)
Run Code Online (Sandbox Code Playgroud)

由于您没有定义post方法,因此获得a是正确的行为405 (METHOD NOT ALLOWED) error.