2017-01-03 9 views
0

でDJANGO RESTフレームワークを使用してPOSTリクエストを作るためにどのようにこれは私のモデルクラスです:は、Ajax

class PoliceAssurance(models.Model): 
     Numpolice = models.IntegerField() 
     Raison = models.CharField(max_length=50) 
     Tel = models.IntegerField() 
     Email = models.CharField(max_length=50) 

とここで私のシリアライザですAJAXコールを介して。どのように私はこのタスクに近づくかもしれないの情報を提供してください誰か?

これはあなたが一緒にCSRFの情報を送信する必要が

@login_required(login_url="login/") 
def home(request): 
    return render(request,"home.html") 

class PoliceViewset(generics.ListCreateAPIView):  
    queryset = PoliceAssurance.objects.all() 
    serializer_class = PoliceSerializer  

と私urls.py

urlpatterns=[ 
    url(r'^$', views.home, name='home'), 
    url(r'PoliceAssurance',views.PoliceViewset.as_view(),    name='PoliceAssurance'), 
    ] 

この私のAJAXリクエスト

$(#suit).click(function(){   

    var data = {}; 
    data.Numpolice = $(#num).val(); 
    data.Raison = $(#raison).val(); 
    data.Tel = $(#tel).val(); 
    data.Email = $(#email).val(); 

    $.ajax({ 
     type: "POST", 
     url: "/PoliceAssurance/", 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(data){ 
      alert(data); 
     }, 
     failure: function(errMsg) { 
      alert(errMsg); 
     } 
    }); 
}); 
+1

これは非常に広いです。フロントエンドで何を使用していますか? jquery、angularなどのフレームワークを使用する予定ですか? http://stackoverflow.com/questions/20306981/how-do-i-integrate-ajax-with-django-applications/28341345#28341345 – Wtower

+0

フロントエンドでjquery + reactJs + htmlを使用します –

+0

ビューをお持ちですか?もしそうでなければ、あなたはそれと一緒に行くための1つのURL経路を必要とします。もしそうなら、あなたはコードを投稿できますか? – ChidG

答えて

0

私のviews.pyですおそらくAjaxリクエスト、またはあなたのビューを免除します。 hereを参照してください。あなたはAJAXでこのbeforeSend機能が含まれている場合、それはトリックを行うことができます:

$.ajax({ 
      type: "POST", 
      ... 
      beforeSend: function(xhr, settings) { 
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) { 
          xhr.setRequestHeader("X-CSRFToken", {% csrf_token %}); 
       } 
      }, 
      ... 

ではJavaScriptを仮定したテンプレートの一部であり、csrftokenは{%csrf_token%}によってoptainedすることができます。

これが役に立ちます。