2013-06-18 5 views
6

와 아약스 요청 (방법은 허용되지 않습니다) 내가 가지고있는 다음과 같은 클래스 기반보기405 장고

class SupportView(BaseDetailView): 

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

그리고 다음 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> 

그리고 다음 URL을

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

하지만 버튼을 클릭하면 표시됩니다. 127.0.0.1:8000/profiles/support/ 405 (METHOD NOT ALLOWED) error. Any ideas ?

+0

왜 'BaseDetailView' 클래스를 사용하고 있습니까? 왜 당신은'render_to_resonse'를 덮어 썼습니까? @btoueg와 마찬가지로'post' 메소드를 작성해야하지만 CreateView, UpdateView 또는 FormView를 사용할 수 있습니다. 너 뭐하려고? – lalo

답변

16

당신은 당신의보기에서 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) 

당신이 post 방법을 정의하지 않았기 때문에, 그것은 405 (METHOD NOT ALLOWED) error을받을 수있는 권리 행동입니다.