服务器总是在 Angularjs ajax 调用 Django 时抛出 403

Server always throws 403 on Angularjs ajax call in Django

服务器总是在我的 Django 应用程序中抛出 403。我尝试将 csrf 与发布到服务器的数据一起使用,但仍然没有成功。我错过了什么?

下面是如何调用 $http 服务函数

   <body ng-controller="rdCtrl">
        <a ng-click="saveprof()">Save</a>  

   <script>
    var app = angular.module('rdExampleApp', ['ui.rdplot']);
    app.controller('rdCtrl', function ($scope, $http) {
        $scope.dataset = {
     "d0": { "id": 0, "name": "Housing", "value": 18 },
     "d1": { "id": 1, "name": "Travel", "value": 31.08 },
     "d2": { "id": 2, "name": "Restaurant", "value": 64 },
     "d3": { "id": 3, "name": "Bank", "value": 3 },
     "d4": { "id": 4, "name": "Movies", "value": 10 }
      };

      $scope.func = function func() {
             var jdata = $scope.dataset;
             return jdata;
        }

        $scope.saveprof = function () {
            //show spinner        
            $('.spinner').show();
            $http.post('saveprof', {
                data: { 'data': $scope.dataset},
                'csrfmiddlewaretoken': $("input[name=csrfmiddlewaretoken]").val()
            })
                      .success(function (data) {
                          if (data == "null") {
                              //your code if return data empty 
                          } else {
                              //your code if return data not empty 
                              $('#message').html(data);
                          }
                          //hide spinner
                          $('.spinner').fadeOut();
                      })
                      .error(function (data, status, headers, config) {
                          console.log('error' + status);
                          //hide spinner in case of error
                          $('.spinner').fadeOut();
                      })
    });
</script>
</body>

编辑:

我更正了它,当我点击按钮时 ajax 调用被调用 - 但它 returns 403 错误.. 禁止访问.. 我在我的 django 视图中有视图 saveprof.. 和我也使用了 csrf 令牌。我不确定为什么服务器 returns 403。 (http:/x.x.x.x/saveprof)

我错过了什么?

你必须将 $http 作为参数注入控制器

app.controller('rdCtrl', function ($scope, $http) { .. }