2017-02-24 3 views
0

Djangoで異なるクラスベースのビューを作成しました。私が作成したHTMLには、AJAXでリクエストするフォームがあります。私の問題は、それは私が私がrigthそれをやっているかどうかを知るドン、または私はそれを動作させるために何かを変更する必要がある場合(POST)DjangoのクラスベースのビューへのPOSTリクエストの作成方法

を許可されていません

方法を提供することです。

マイ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'}) 

のようなものであると私は私がウェブからのコードの一部を得たが、私は本当に知らないのJavascript

$(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

これは、要求を処理するはずだったクラスが別のものであったという事実です。ありがとうございました! –

関連する問題