2013-06-18 14 views
6

でのAjaxリクエストのために(メソッドが許可されていない)I持って、次のクラスベースビュー405は、Djangoの

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を取得する権利行動です。

関連する問題