2013-06-18 7 views
6

ich die folgende Klasse Based Ansicht405 haben (Methode nicht erlaubt) für Ajax-Request mit django

class SupportView(BaseDetailView): 

    def render_to_response(self): 
     if self.request.method == "POST": 
      message = "YES" 
     else: 
      message = "NO" 
     return HttpResponse(message) 

Und folgende JQuery-Code:

<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> 

Und folgende URL

url(r'^support/$', SupportView.as_view()) 

Aber wenn ich auf die Schaltfläche klicke, sehe ich 127.0.0.1:8000/profiles/support/ 405 (METHOD NOT ALLOWED) error. Any ideas ?

+0

Warum verwenden Sie die 'BaseDetailView' Klasse? Warum überschreibst du das 'render_to_resonse'? Wie @btoeg sagte, müssen Sie die 'post' Methode schreiben, aber Sie können CreateView, UpdateView oder FormView verwenden. Was versuchst du? – lalo

Antwort

16

Sie haben die post Methode in Ihrer Ansicht implementieren:

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) 

Da Sie die post Methode nicht definiert haben, dann ist es das richtige Verhalten eines 405 (METHOD NOT ALLOWED) error zu bekommen.

Verwandte Themen