2017-02-24 1 views
0

장고에 다른 클래스 기반 뷰를 만들었습니다. HTML에서 생성 된 일부 양식은 AJAX로 요청합니다. 내 문제는 나에게장고의 클래스 기반 뷰에 POST 요청을하는 방법

방법 허용되지 않음 (POST)

내가 rigth를하고 있어요 만약 내가 알고 돈, 또는 내가 뭔가를 수정해야하는 경우가 작동하려면를 제공한다는 것입니다.

내 view.py이

class Landing(View): 
    def get(self,request): 
     if request.method == 'POST': 
      if request.is_ajax(): 
       data = {"lat":20.586, "lon":-89.530} 
       print request.POST.get('value') 
       return JsonResponse(data) 
    return render(request,'landing.html',{'foo':'bar'}) 

같은 것입니다 그리고 난 내가 웹에서 코드의 일부를 가지고

$(document).ready(function() { 
    $('#productos').on('change', function(e) { 
    //Call the POST 
    e.preventDefault(); 
    var csrftoken = getCookie('csrftoken'); 
    var value = $('#productos').val(); 

    $.ajax({ 
     url: window.location.href, 
     type: "POST", 
     data: { 
      csrfmiddlewaretoken : csrftoken, 
      value : value 
     }, 
     success : function(json) { 
      console.log(json); 
      drop(json); 
     }, 
     error : function(xhr,errmsg,err){ 
      console.log(xhr.status+": "+xhr.responseText) 
     } 
    }); 
    }); 
}); 

자바 스크립트

에서 reques을 보내,하지만 난 정말 몰라 클래스 기반 뷰없이 사용했기 때문에이를 사용하는 방법.

그래서 내 코드가 POST 메서드를 수락해야합니까?

답변

2

클래스 기반의 뷰의 dispatch 방법은 지금까지 당신이 get 기능을 서면으로 작성했습니다, 호출되는 함수를 결정하지만 post 기능, 그래서 그냥 게시물의 함수로 논리를 이동하지 않습니다.

class Landing(View): 
    def post(self,request): 
     if request.is_ajax(): 
      data = {"lat":20.586, "lon":-89.530} 
      print request.POST.get('value') 
      return JsonResponse(data) 

    def get(self, request): 
     return render(request,'landing.html',{'foo':'bar'}) 
+1

이것은 요청을 처리하기로되어있는 클래스가 다른 것이라는 사실입니다. 고맙습니다! –

관련 문제