Django-Angular CRUD 操作

1 投票
1 回答
1145 浏览
提问于 2025-04-18 14:02

我正在使用一个叫做 Django-Angular 的自定义库,在我的Django模板中进行基本的增删改查操作。

我在按照 官方文档 的指引,但在我的模板中用Angular JS查询Django对象时遇到了问题——它只是显示了Angular JS模板标签 {{ property.name }},而且我收到了一个Angular JS的 Uncaught object 错误,这个错误指向了angular.js文件(这是它指向的代码块,指向的是第一行)。

根据 这个回答,模块没有正确注入,这就是我需要帮助的地方。

在跟着教程的过程中,我设置了一个Django视图:

class PropertyMapView(NgCRUDView): model = Property fields = ['name',]

还添加了一个URL参数:

url(r'^crud/property/?$', PropertyMapView.as_view(), name='property_map_view'), 这是我的模板:

  <body ng-app="myServices">

    {% verbatim %}

    <script type="text/javascript">


    var myServices = angular.module('myServices', ['ngResource']);

    myServices.factory('Property', ['$resource', function($resource) {
        return $resource('/crud/property/', {'pk': '@pk'}, {
        });
    }]);



    myServices.controller('myCtrl', ['$scope', 'Property', function ($scope, Property) {
    // Query returns an array of objects, MyModel.objects.all() by default
    $scope.models = Property.query();

    // Getting a single object
    var property = Property.get({pk: 1});

    }]);

    </script>

    <div ng-controller="myCtrl" >
        <h2>Test: {{ property.name }} </h2>
        or
        <h2>Test: {{ property }} </h2>
    </div>

    {% endverbatim %}

顺便说一下,我觉得这个视图本身是有效的,因为当我查询 http://myurl.com/crud/property/ 时,浏览器中确实收到了数据:

[{"pk":1,"name":"Pastatas A"},{"pk":4,"name":"hmgbjmnbm"},{"pk":3,"name":"gfghfghfg"},{"pk":5,"name":"sdfsdgsdgsdgasssss"}]

我只是无法设置好JavaScript部分并让它工作——正如我所说,它只是显示了Angular JS模板标签 {{ property.name }},而且我收到了一个Angular JS的 Uncaught object 错误。

1 个回答

2

看起来是因为没有安装ng模块,所以它没有正确加载。

<script src="http://code.angularjs.org/1.2.19/angular-resource.js"></script>

我修复了我的控制器。应该这样写:

$scope.property = Property.get({pk: 1});

而不是这样:

var property = Property.get({pk: 1});

现在似乎可以正常工作了!

撰写回答