2017-12-22 6 views
1

Ich versuche, Daten mit DRF und Axios zu posten. Ich habe bisher ein paar verschiedene Möglichkeiten mit dem gleichen Ergebnis ausprobiert, 403 (Verboten). Ich bin in der Lage, Daten mit axios.get zu bekommen, aber nicht in der Lage, Daten zu posten. Ich bin neu, um mich auszuruhen und Ajax zu benutzen, also entschuldige ich mich, wenn es etwas Offensichtliches ist.Django Rest und Axios

Axios Anruf

return axios({ 
       method: 'post', 
       url: "/schedules/", 
       data: { 
        "emp": this.emp.emp, 
        'start_time': this.startTime, 
        "end_time": this.endTime, 
        "date": this.today, 
        "location": this.location 
       }, 
       xsrfHeaderName: "X-CSRFToken", 
       responseType: 'json' 
       }) 

Settings.py

CSRF_COOKIE_NAME = "XSRF-TOKEN" 

Serializer

class SchedSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Schedule 
     fields = (
      'location', 
      'emp', 
      'date', 
      'start_time', 
      'end_time' 
     ) 

Ansicht

class SchedViewSet(viewsets.ModelViewSet): 
    queryset = Schedule.objects.all() 
    serializer_class = serializers.SchedSerializer 

Antwort

0

Dies ist die Einrichtung, die ich verwende, die funktioniert. Es gibt zwei Dinge, Sie müssen sicherstellen, dass Ihre Kopfzeile korrekt gesendet wird.

HTTP.defaults.headers.post['x-csrftoken'] = {{csrf_token}}; 
HTTP.post('django-url/', {"id":id,"value":resp}) 

Ich konnte dies mit https://github.com/ottoyiu/django-cors-headers lösen. Stellen Sie sicher, dass Ihre csrf_token richtig bevölkern, dann stellen Sie sicher, dass Sie die richtigen Header erlauben an die django app in settings.py weitergegeben werden:

CORS_ALLOW_HEADERS = (
... 
    'x-csrftoken', 
... 
}