2017-02-24 137 views
0

我已經在Django上創建了不同的基於類的視圖。在我創建的HTML上,一些表單使用AJAX發出請求。我的問題是,它給了我如何使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) 
     } 
    }); 
    }); 
}); 

我得到了一些來自Web的代碼發送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

這個,以及應該處理請求的類是另一個的事實。謝謝! –

相關問題