2016-03-19 1 views
1

Ich sende eine Post-Anfrage an eine Django-Ansicht von angular js, aber es gibt mir 500 (interner Serverfehler).Post Anfrage von angular js zu Django anzeigen gibt 500 internen Server Fehler

Dies ist meine Winkel Datei:

var app = angular.module('myApp', []) 
app.config(function($interpolateProvider, $httpProvider){ 
$interpolateProvider.startSymbol('{[{').endSymbol('}]}'); 
$httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
}); 
app.controller('myCtrl', ['$scope', '$http', function ($scope, $http){ 
var details = { 
length : $scope.length, 
breadth : $scope.breadth, 
height : $scope.height, 
weight : $scope.weight, 
country : $scope.country, 
itemType : $scope.itemType 
} 
var theJSON = JSON.stringify(details); 
$http({ 
     method : 'POST', 
     url  : '/interApp/calc/', 
     data : $.param(theJSON), 
     headers : {'Content-Type': 'data:application/json;charset=utf-8;'+ encodeURIComponent(theJSON) }, 

    }).success(function(data) { 
     console.log(theJSON); 
    }) 

    } 
}]) 

und dies ist die django Ansicht:

from django.http import Http404 
from django.http import HttpResponse 
from django.shortcuts import render_to_response 
from .models import Countries,CourierCompany,Zones,Weight 
from django.core.context_processors import csrf 

def rate_calculator(request): 
    if request.method == "POST": 
     ////code goes here... 

und meine urls.py Datei ist:

from django.conf.urls import url 
from . import CostView 
urlpatterns = [ 
    url(r'^calc/', views1.rate_calculator, name='rate_calculator'), 
] 

aber es gibt mir Der Fehler im Konsolenfenster:

POST http://127.0.0.1:8000/interApp/calc/ 500 (Internal Server Error)

+0

Ich denke, 'data: theJSON,' ist genug da –

+0

Versuchen Sie, Daten mit Postman zu posten und sehen, es gibt auch den gleichen Fehler –

+1

Lassen Sie, wenn fehlschlagen - setzen Sie die 'DEBUG = True' in den Einstellungen und beobachten Sie den Fehler. Oder, wenn Sie die Protokollierung eingerichtet haben - nur erkunden, was der Fehler ist. – alecxe

Antwort

0

versuchen, die Daten in Ihrer django Funktion von json zu lesen, versuchen, das gleiche mit POSTMAN

def rate_calculator(request): 
    if request.method == "POST": 
     loadedJsonData = json.loads(request.body) 
     length = loadedJsonData.get('length') 
+0

Ich habe Debug = True und ich bekomme den 500 Fehler im Konsolenfenster meines Browsers und das Lesen der Daten hilft nicht. –

+0

Verwenden Sie diese Daten, um die gleiche Anfrage durch Postbote zu treffen und dann zu sehen, was genau der Fehler ist. Nach dem Lesen der Daten könnte ein Fehler in Ihrem Code auftreten. –

0

Ihr Fehler ist nicht klar und ich glaube, Ihre URL scheint auch falsch .. Also wenn Dein eckiger Beitrag wirklich die Ansichten trifft? Um zu überprüfen, drucken Sie Ihre Anfrage unter Ihren Ansichten. wie diese,

def rate_calculator(request): 
    print 'request',request 

Überprüfen Sie den Inhalt in POST: ...... und diese Zurückverfolgungs versuchen .. auch einfach durch Import,

from traceback import format_exc 

und setzen diese print-Anweisung unter Ihre Ansichten,

print 'Error report', repr(format_exc()) 

Davor, versuchen Sie diese Winkel POST-Methode,

$http.post('/your url/', { 
    data: details, 
}).success(function(response) { 
    console.log('your console') 
}) 

Dann lassen Sie mich wissen, was genaue Fehler ist, denke ich, kann, wenn Sie diese POST folgen, fordern Sie nicht Fehler bekommen .. , wenn Sie durch die Verwendung dieser es Daten in Ihrem Post Anfrage erhalten habe,

data = json.loads(request.body) 
+0

hilft auch nicht. –

Verwandte Themen