如何使用带有ajax的DJANGO REST框架发出POST请求

时间:2017-01-03 17:14:12

标签: jquery ajax django reactjs django-rest-framework

这是我的模特课:

>> mex -O sample.c
Building with 'gcc'.
MEX completed successfully.
>> n = 5;
>> T = sample(n)

T =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

这是我的序列化器:

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

现在,我需要通过AJAX调用发出POST请求。有谁可以提供有关我如何处理这项任务的信息?

这是我的views.py

    class PoliceSerializer(serializers.ModelSerializer):        
        class Meta:
            model = PoliceAssurance
            fields = ('Numpolice','Raison','Tel','Email');

和我的urls.py

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

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

这是我的ajax请求

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

2 个答案:

答案 0 :(得分:3)

您可能需要在此链接(详细信息)中看到此http://www.django-rest-framework.org/topics/ajax-csrf-cors/#javascript-clients和django文档,而且我的代码对我很有用

<html>
<body>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>

Django休息框架不像普通的django那样工作。你需要trans&#34; csrfmiddlewaretoken&#34;在数据中&#34; X-CSRFToken&#34;或者&#34; HTTP-X-CSRFToken&#34;在RequestHeader中

答案 1 :(得分:0)

您可能需要发送CSRF信息以及Ajax请求,或者免除您的视图。见here。如果你在ajax中包含这个beforeSend函数,它可以做到这一点:

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

假设javascript是模板的一部分,可以通过{%csrf_token%}来选择csrftoken。

希望这有帮助。