我正在从角度js向django视图发送一个帖子请求,但它给了我500(内部服务器错误)。
这是我的角度文件:
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);
})
}
}])
这是django视图:
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...
和我的urls.py文件是:
from django.conf.urls import url
from . import CostView
urlpatterns = [
url(r'^calc/', views1.rate_calculator, name='rate_calculator'),
]
但它在控制台窗口中给出了错误:
POST http://127.0.0.1:8000/interApp/calc/ 500(内部服务器错误)
答案 0 :(得分:0)
尝试通过json读取django函数中的数据,使用POSTMAN尝试相同的
def rate_calculator(request):
if request.method == "POST":
loadedJsonData = json.loads(request.body)
length = loadedJsonData.get('length')
答案 1 :(得分:0)
您的错误不明确,我认为您的网址似乎也有错误。所以,如果您的角色帖真的出现了观点?检查根据您的意见打印您的请求。像这样,
def rate_calculator(request):
print 'request',request
检查POST中的内容:......并尝试此回溯..只需导入,
from traceback import format_exc
并将此print语句放在您的观点下
print 'Error report', repr(format_exc())
在此之前,尝试这种角度POST方法,
$http.post('/your url/', {
data: details,
}).success(function(response) {
console.log('your console')
})
然后让我知道什么是确切的错误,我想如果你按照这个POST,请求你不会得到错误.. 如果您在发布请求中获得数据,请使用此
data = json.loads(request.body)