2013-06-18 10 views
6

mam następujące klasy opartych Zobacz405 (niedozwolona metoda) na żądanie ajax z Django

class SupportView(BaseDetailView): 

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

I następujący kod 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> 

I następujący adres URL

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

Ale gdy kliknę przycisk, widzę 127.0.0.1:8000/profiles/support/ 405 (METHOD NOT ALLOWED) error. Any ideas ?

+0

Dlaczego używasz klasy "BaseDetailView'? dlaczego nadpisujesz 'render_to_resonse'? Tak jak powiedział @btoueg, musisz napisać metodę 'post', ale możesz użyć CreateView, UpdateView lub FormView. Do czego próbujesz? – lalo

Odpowiedz

16

Trzeba wdrożyć metodę post w widoku:

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) 

Ponieważ nie określają sposobu post, to prawo zachowania dostać 405 (METHOD NOT ALLOWED) error.

Powiązane problemy