2013-06-18 151 views
6

Ajax请求,我有以下基于类的视图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(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