从角度js到django视图的发布请求给出500内部服务器错误

时间:2016-03-19 11:41:09

标签: python angularjs django

我正在从角度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(内部服务器错误)

2 个答案:

答案 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)