2

我是 django 和 angularjs 的新手。我想将 Django 用于 REST api,将 angularjs 用于前端视图。

我有一个返回 json 响应的 django 视图:

class MyView(View):

    def get(self, request):
        data = serializers.serialize('json', MyModel.objects.order_by('name'))
        return HttpResponse(data, mimetype='application/json')

    def options(self, request):
        response = HttpResponse()
        response['allow'] = ','.join(['get', 'post', 'put', 'delete', 'options'])
        return response

打电话

http://localhost:8000/myapp/myview

我得到了正确的 json 响应

如果在 angularjs 控制器(controllers.js)中,我尝试像这样调用该视图:

angular.module('myApp.controllers', []).
  controller('MyCtrl', ['$scope', '$http', function($scope, $http) {
    $scope.test = "Hola";
    delete $http.defaults.headers.common['X-Requested-With'];
    $http.get('http://localhost:8000/myapp/myview').success(function(data) {
      $scope.results = data;
      console.log(data);
    }).error(function(data, status) {
      $scope.data = data || "Request failed";
      $scope.status = status;
      console.log(data);
    });
}]);

“测试”值在模板中正确打印

在 django 日志中,我有:“GET /myapp/myview/HTTP/1.1”200 853

但在角度我不检索任何数据。如果我在错误方法中设置断点,我的数据为空且状态 = 0。

有什么提示吗?我错过了什么吗?

4

2 回答 2

0
$http.get('http://localhost:8000/myapp/myview/').success(function(data) 

URL 需要删除尾随的 /,然后附加 .json。像这样:

$http.get('http://localhost:8000/myapp/myview.json').success(function(data) 
于 2013-09-02T01:05:40.763 回答
0

一直在苦苦挣扎。问题在于CORS。解决方案在这里

于 2017-02-23T11:43:02.093 回答